3

Я все еще новичок в Linux, но вот что я пытаюсь сделать.

Мне нужно копировать все подкаталоги и файлы из одного каталога в другой каждые 5 минут или около того, при этом старые данные автоматически перезаписываются новыми.

Я также хотел бы, чтобы это запускалось при запуске. Есть ли способ сделать это? Если да, то какая программа мне понадобится для планирования автоматизации и какая командная строка мне понадобится.

2 ответа2

5

Я бы сделал фактическую копию с

rsync --archive --delete "fromdir/" "todir/"

Это будет более эффективно, чем использование cp , поскольку rsync копирует только файлы, которые были изменены, и даже тогда копирует только само изменение, а не весь файл.

Если вы предпочитаете, чтобы он не удалял файлы из todir , которые были удалены из fromdir , вы просто пропускаете опцию --delete .

Опция --archive основном говорит о том, что она сохраняет состояние файлов и их содержимое. Обратите внимание, что если у вас есть какие-либо символические ссылки в dir1 , это скопирует сами ссылки , а не файлы, на которые они ссылаются. Использование этого флага с rsync аналогично использованию cp -a .

Убедитесь, что вы используете закрывающую косую черту в fromdir/: это говорит rsync копировать содержимое этого каталога, а не сам каталог. Другими словами, если вы пропустите финал / , вы получите

todir/
todir/stuff
todir/fromdir/
todir/fromdir/morestuff

скорее, чем

todir/
todir/morestuff
3

Вам нужно поместить скрипт в cron, как это сделать, читайте здесь: http://www.foogazi.com/2006/12/07/understand-cron-jobs-in-5-minutes/

Вместо скрипта вы можете ввести команду для выполнения в вашем crontab, она будет выглядеть так:

*/5 * * * * cp -r /fromdir /todir

также добавьте в /etc /crontab следующую строку для ее исключения при загрузке:

@reboot root cp -r /fromdir /todir

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