2

Я написал этот скрипт резервного копирования, который просматривает файл и копирует последние файлы в папку.

#!/usr/bin/bash

# the number of days to do the backup for.
days=2;

# the files to backup.
location[0]='/opt/location'

# the location to copy the file to
copyLocation='/users/me/Backup/firstBackupScriptTry'

# preform the back up
for i in ${location[*]}
do
        find $i \! -name '*.class' -mtime -$days \! -type d -exec cp {} $copyLocation \;
done

Это работает, но это не так полезно.

Я бы предпочел, чтобы скрипт сохранял структуру каталогов при копировании. Т.е. я бы хотел это сделать: cp -r from to но копировать только последние файлы.

3 ответа3

6

rsync сделан для этой задачи. Проверьте страницу примеров для использования.

1

Возможно, немного не по теме, но вы можете взглянуть на BoxBackup. Я использовал скрипты rsync в течение долгого времени, прежде чем перейти на BoxBackup, и это действительно облегчает задачу - особенно "домашнее хозяйство" ...

1

Можно было бы изменить имена файлов, которые вы получаете при запуске find. Итак, в вашем цикле, имея совпадающее имя файла в $ filename, вы должны:

  1. В $ filename замените начальный $ i на ничто
  2. узнать $ dir_name в результате 1, используя dirname
  3. добавьте конечный $ copyLocation к $ dirname и используйте его в качестве аргумента для mkdir -p для создания отсутствующих каталогов
  4. скопировать $ filename в "$ copyLocation/$ dirname"

Я также собираюсь предложить еще одну альтернативу синхронизации файлов: унисон. Это проще в использовании, чем rsync.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .