Сбор файлов за определенное время

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь копировать файлы из директории /etc, которые были последним раз изменены в 2022 году, в директорию /tmp/etc, сохраняя при этом структуру директорий.

🎯 Задачи

В этом проекте вы научитесь:

  • Создавать скрипт для автоматизации процесса копирования файлов
  • Использовать команду find для поиска файлов по дате их последнего изменения
  • Использовать команду cp для копирования файлов с сохранением структуры директорий

🏆 Достижения

После завершения этого проекта вы сможете:

  • Автоматизировать процесс копирования файлов из определенной директории в зависимости от их даты последнего изменения
  • Разобраться, как использовать общие команды shell, такие как find и cp, для управления файлами и директориями
  • Применить свои знания для решения реальных задач управления файлами

Создайте скрипт для сбора файлов

В этом шаге вы создадите скрипт для копирования файлов из директории /etc, которые были последним раз изменены в 2022 году, в директорию /tmp/etc, сохраняя при этом структуру директорий.

  1. Откройте текстовый редактор и создайте новый файл с именем collect_files.sh в директории /home/labex/project.
  2. Добавьте в файл collect_files.sh следующий код:
#!/bin/zsh

## Script: collect_files.sh
## Description: Copies files from the /etc directory with a last modified year in 2022 to the /tmp/etc directory while preserving directory structure.

source_dir="/etc"
target_dir="/tmp"
year="2022"

## Create the target directory
mkdir -p "$target_dir"

## Use the find command to search for files in the source directory with a last modified year in 2022 and copy them to the target directory
find "$source_dir" -type f -newermt "$year-01-01"! -newermt "$year-12-31" -exec cp --parents --dereference "{}" "$target_dir" \;

echo "File copying completed."

Этот скрипт использует команду find для поиска файлов в директории /etc, которые были последним раз изменены в 2022 году. Параметры -newermt и ! -newermt используются для фильтрации файлов по дате их последнего изменения. Затем команда cp используется для копирования файлов в директорию /tmp/etc, сохраняя при этом структуру директорий.

  1. Сохраните файл.

Проверьте скрипт

В этом шаге вы проверите скрипт collect_files.sh, чтобы убедиться, что он работает как ожидается.

  1. Откройте терминал и перейдите в директорию /home/labex/project.
  2. Запустите скрипт с помощью следующей команды:
sudo sh collect_files.sh

Эта команда запускает скрипт с повышенными привилегиями, что необходимо для копирования файлов из директории /etc.

  1. После завершения работы скрипта проверьте директорию /tmp/etc, чтобы убедиться, что файлы с датой последнего изменения в 2022 году были скопированы правильно.
  2. Убедитесь, что структура директорий сохранена. Например, если файл /etc/fstab был скопирован, вы должны увидеть файл по пути /tmp/etc/fstab.

Если скрипт работает как ожидается, вы завершили проект. Если вы столкнулись с какими-либо проблемами, проверьте скрипт и инструкции и внесите необходимые изменения.

✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.