Что состоит в том, чтобы проверить лучший способ, изменился ли файл в Bash и сохраняет 15 последних копий его?

Вы могли использовать массив:

BASES[0]=...
BASES[1]=...
BASES[2]=...
# or BASES+=(...)
# or BASES=(foo bar baz)
echo "${BASES[@]}" | parallel cp -a {} $DEST

Для создания этого более безопасным (пробелы и новые строки в переменной в особенности) что-то вроде этого должно работать более надежно:

printf "%s\0" "${BASES[@]}" | parallel -0 cp -a {} "$DEST"

Примечание: массивы не находятся в POSIX, это работает с текущими версиями удара и ksh все же.

2
01.01.2014, 19:12
2 ответа

Рассмотрите для использования rsnapshot, который дает Вам, возможность делает поворачивание файловой системы (или папки) и поддерживает arbitraty количество версий.

Rsnapshot делает замораживание целой файловой системы или папок, но с небольшой работой можно удалить старые последовательные версии без изменений.

Rsnapshot использует rsync и имеет много параметров для настройки. Очевидно, это может быть вставлено в crontab.

1
27.01.2020, 22:22

Это назвало newsyslog или logrotate. Это - самый легкий путь, сохраняет Вас явно редактирование crontab и выполнение других процессов и соглашений с распространенными ошибками (как проверка старые файлы, удаление их, переименование других, атомарности, и т.д.) уже. Это доказывается и используется остальной частью системы, таким образом, необходимо снова использовать его.

0
27.01.2020, 22:22
  • 1
    Как я использовал бы его для одного определенного файла, хотя и это должно будет быть сделано посредством изменения системных настроек журнала? –  r0berts 16.01.2014, 12:49
  • 2
    Вы просто помещаете конфигурацию для своего определенного файла в, например (на Debian) /etc/logrotate.d/. Или можно звонить logrotate вручную с файлом конфигурации, это даже не должно базироваться. –  mirabilos 16.01.2014, 16:05

Теги

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