Как я могу написать сценарий создания резервного копирования недавно измененных файлов в Bash?

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

#!/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 но только скопируйте недавние файлы.

2
задан 10.02.2010, 20:47

3 ответа

Путь состоял бы в том, чтобы изменить имена файлов, которые Вы получаете когда рабочая находка. Таким образом в Вашем цикле, имея подобранное имя файла в $filename необходимо быть:

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

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

1
ответ дан 08.12.2019, 04:59

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

6
ответ дан 08.12.2019, 04:59

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

1
ответ дан 08.12.2019, 04:59

Теги

Похожие вопросы