rsync для копирования файлов, которые изменились

42

Мне нужно копировать некоторые файлы из определенного каталога в другое место на ежедневной основе. Я хочу скопировать только изменения, поэтому планирую использовать rsync. Эти файлы следуют следующему соглашению об именахmysql-bin.*

Моя команда выглядит следующим образом

# rsync --update -raz --progress /var/lib/mysql/mysql-bin.*  /dbdata/binarylog/

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

Зама Кес
источник

Ответы:

51

Это выглядит хорошо. Хотя почему вы используете -zвозможность сжатия передачи? Этот параметр обычно используется при копировании на удаленный сервер rsync по медленной сети. В этом случае он будет сжимать и мгновенно распаковывать файлы, что только увеличит нагрузку на ваш процессор без какой-либо выгоды.

Опция -a(архив) подразумевает опцию -r(рекурсивный), поэтому нет необходимости явно указывать это в командной строке.

Вы можете использовать -nопцию (или --dry-run), чтобы проверить вашу команду. Он покажет, что он будет делать, не копируя файлы. Чтобы реально увидеть, что происходит, вы также должны использовать -vопцию (или --verbose).

Следовательно:

rsync -uanv /var/lib/mysql/mysql-bin.*  /dbdata/binarylog/

и когда вы будете довольны тем, что файлы правильно перечислены в пробном режиме, удалите nv:

rsync -ua --progress /var/lib/mysql/mysql-bin.*  /dbdata/binarylog/
garethTheRed
источник
3
Как сказано в man-странице, --dry-runфлаг чаще всего используется вместе с --verboseфлагом
Бенджамин Лейнвебер,