Как сделать резервную копию недавно измененных файлов в 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 но копировать только последние файлы.

26
задан Ivo Flipse
01.12.2022 23:24 Количество просмотров материала 2924
Распечатать страницу

3 ответа

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

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

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

1
отвечен geek 2022-12-03 07:12

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

6
отвечен Justin Smith 2022-12-03 09:29

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

1
отвечен vwegert 2022-12-03 11:46

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх