Мне нужно прервать и перезапустить операцию копирования Linux. Каков наилучший способ сделать это?

В настоящее время я копирую данные с одного компьютера Debian на другой. Я начал это через sshfs и tar следующим образом, но нет никаких требований для использования sshfs или tar если будет достаточно другого надежного способа:

local$ mkdir /path/to/remote-sdb1
local$ sshfs root@remote:/mnt/sdb1 /path/to/remote-sdb1
local$ tar cf - /path/to/local/data/to/copy | tar xf - -C /path/to/remote-sdb1 &

Удаленный блок представляет собой однократную загрузку компакт-диска System Rescue без локальной операционной системы и внутри моего брандмауэра, поэтому я не слишком беспокоюсь о том, чтобы войти в систему как пользователь root, пока кто-то не скажет иначе.

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

Когда я включаю его снова, я знаю, что не могу возобновить операции tar; вместо этого, есть ли что-то вроде команды rsync , которая позволит мне легко возобновить с того места, где я остановился, и завершить передачу, включая завершение неудачной передачи выполняемого файла в момент, когда я прерываю операцию?

После этого я планирую запустить команду rsync в этом ответе, чтобы убедиться, что передача успешно завершена, если кто-то не порекомендует это излишне:

local$ rsync -niaHc /path/to/local/data/to/copy/ /path/to/remote-sdb1/path/to/local/data/to/copy

(Как указано в сообщении, мне нужно быть осторожным, чтобы завершить имя первой папки символом / .)

1 ответ1

4

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

Чтобы возобновить его, в общем, повторите ту же команду.

Если вы не используете --partial , неполные файлы не останутся в вашем каталоге, поэтому просто повторите ту же команду - файлы, которые уже были переданы, не будут переданы во второй раз, а файлы, которые не были переданы, будут быть переданным.

Кстати, то, что я всегда использую, чтобы убедиться, что я не отправляю вторую копию моего источника в место назначения, это то, что я сначала проверяю, что каталог назначения создан. Тогда используйте:

rsync <options> source/. dest/.

Таким образом (при условии, что вы используете какую-то рекурсивную опцию), он обязательно скопирует содержимое источника в содержимое dest.

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