Только загружая новые папки/файлы rsync

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

Файлы, которые загружаются, хранятся в папках, после того как я загрузил их на свою локальную машину, я могу удалить папки (и их содержание), которые больше не требуются.

Когда я выполню свою команду rsync снова, она загрузит любые новые папки, а также старые папки, которые я удалил из своей локальной машины, которую я не хочу.

То, что я хотел бы сделать на команде rsync, является хранилищем имена папок в файле (как downloaded.log), и затем используйте это в качестве моего исключать файл в следующий раз, когда я выполняю rsync, таким образом, это не загрузит эти папки снова. Я думаю, что было бы более эффективно сохранить только имена папок, а не папки и имена файлов как путем пропуска папки, Вы пропустите файл так или иначе.

Кто-то мог объяснить, как у меня могла быть команда rsync, производит имена папок?

Текущая команда RSYNC:

rsync -avz --dry-run remote-host:downloads/ ~/Downloads/
-2
задан 23 October 2015 в 01:05
1 ответ

используйте - 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.

1
ответ дан 5 December 2019 в 21:25

Теги

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