4

У меня есть 3 диска. Для этого мы будем называть их A, B и C соответственно.

А 2 ТБ

B - 1 ТБ

C составляет 500 ГБ

Я уже бегал

rsync -avz -progress A B

Теперь B заполнен, и я хочу переместить / скопировать то, чего еще нет на B, из A в C

Мне действительно не важно, что происходит с тем, что находится на А, так как я все равно переформатирую.

2 ответа2

5

Составьте список всех файлов на B, скажем с помощью команды find , перейдя на этот диск и запустив:

$ find . > files-on-b.xt

Затем при rsync от A до C укажите этот список в параметре --exclude-from :

$ rsync -avz --exclude-from=files-on-b.txt A C

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

См. Справочную страницу rsync и это полезное сообщение в блоге для получения дополнительной информации о --exclude-from .

2

Вы можете использовать --compare-dest . Это экономит время и пространство, поскольку вам не нужно перечислять все содержимое первого пункта назначения, и вы будете постепенно работать со многими целями. Вот как это работает. После копирования содержимого из A в B вы запускаете:

rsync -avz --compare-dest=/path/to/B /path/to/A/ /path/to/C/

rsync будет использовать содержимое B, чтобы увидеть, что он должен передать в C, чтобы сделать копию A полной. Все, что уже находится в B, не будет передано. Обратите внимание, что требуются абсолютные пути для --compare-dest, в противном случае путь берется относительно места назначения.

Если вам в любом случае придется разделить пункт назначения дальше, вы можете сравнить его с несколькими предыдущими целями, добавив больше аргументов --compare-dest .

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