Я периодически выполняю команду rsync, которая загружает новые файлы с моего удаленного сервера.
Файлы, которые загружаются, хранятся в папках, после того как я загрузил их на свою локальную машину, я могу удалить папки (и их содержание), которые больше не требуются.
Когда я выполню свою команду rsync снова, она загрузит любые новые папки, а также старые папки, которые я удалил из своей локальной машины, которую я не хочу.
То, что я хотел бы сделать на команде rsync, является хранилищем имена папок в файле (как downloaded.log), и затем используйте это в качестве моего исключать файл в следующий раз, когда я выполняю rsync, таким образом, это не загрузит эти папки снова. Я думаю, что было бы более эффективно сохранить только имена папок, а не папки и имена файлов как путем пропуска папки, Вы пропустите файл так или иначе.
Кто-то мог объяснить, как у меня могла быть команда rsync, производит имена папок?
Текущая команда RSYNC:
rsync -avz --dry-run remote-host:downloads/ ~/Downloads/
используйте - exclude-from = FILE
и поместите в этот файл каталоги, которые вам не нужны.
Например, если у вас есть тест dir с папки a, b и c внутри, и вы хотите синхронизировать его с папкой test2, но хотите игнорировать папки b и c, вам необходимо создать файл, подобный следующему:
$ cat ignore
/b
/c
, а затем запустить команду
rsync -avz - -exclude-from = игнорировать test / test2 /
изменить:
Чтобы соответствовать вашей команде
rsync -avz --dry-run --exclude-from = / путь / к / игнорировать-файл удаленный-хост: загрузки / ~ / Загрузки /
и в файле / путь / к / игнорировать-файл составьте список содержимого, которое находится на удаленном хосте в таких папках загрузки.
subfolder1/
subfolder2/
edit2:
Чтобы сделать его автоматическим, вы можете создать такой сценарий
/home/youruser/scripts/add-to-ignore.sh
#/bin/bash
for filepath in ~/Downloads/*
do
filename=$(basename $filepath)
echo "$filename/" >> /home/youruser/.ignorelist
done
И затем запустить его вот так
rsync -avz --dry-run --exclude-from = / путь / к / игнорировать файл удаленного хоста: загрузки / ~ / Загрузки / && bash / home / youruser / scripts / add-to-ignore. sh
Это должно помочь, и в списке сохранятся старые каталоги.
Вы также можете использовать --log-file и --log-file-format для регистрации того, что вы только что скопировали в файл. а затем иметь сценарий для удаления начала строк, чтобы вы могли использовать этот файл в качестве источника для --exclude-from.