У меня странное поведение rsync. Мне нужно скопировать все файлы младше 2 дней из одной папки в другую.
Итак, я смешал rsync с аргументом files-from и нашел утилиту в скрипте, чтобы делать то, что мне нужно.
#!/bin/bash
cd /mnt/smb/online/
find . -mtime -2 -print > /tmp/rsynclist
rsync -av --ignore-existing --size-only --files-from=/tmp/rsynclist /mnt/smb/online /mnt/backup/
Файл / tmp / rsynclist в порядке, и в нем есть только файлы, которые мне нужны (все файлы не старше 2 дней). Но rsync, похоже, игнорирует аргумент «файлы из» и продолжает копировать все файлы из более старых источников.
Где я ошибаюсь?
Проблема не в rsync
команда, но в вашем find
. При тестировании вашего скрипта я заметил, что в моем rsynclist
файл, который был изменен, в результате чего rsync скопировал все файлы в этих каталогах.
Чтобы этого не произошло, добавьте -type f
на ваш find
команда.
#!/bin/bash
cd /mnt/smb/online/
find . -type f -mtime -2 -print > /tmp/rsynclist
rsync -av --ignore-existing --size-only --files-from=/tmp/rsynclist /mnt/smb/online /mnt/backup/
После этого в списке должны быть только пути к файлам, что даст желаемый результат.
Синтаксис rsync
команда:
rsync [option] source[x] destination
Вы поместили 2 источника:
попробуйте с:
rsync -av --ignore-existing --size-only --files-from=/tmp/rsynclist /mnt/backup/