Продолжить прерванный cp

17

Можно ли cpснова запустить после того, как он был прерван, и заставить его начать с того места, где он закончился в прошлый раз (не перезаписывать данные, которые уже скопированы, только копировать то, что еще осталось)?

Фил
источник

Ответы:

32

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

Вы можете использовать его как cp, вот так:

rsync --append /where/your/copying/from /where/you/want/to/copy
Рори
источник
3
Или --append-verifyсравнить контрольные суммы в конце, чтобы быть уверенным.
Заз
7

Используйте ключ -u и посмотрите страницу руководства cp.

Свен
источник
но исходные файлы не изменились или что-то еще
Фил
1
-u предназначен только для «обновления» ... т.е. он не будет перезаписывать существующие файлы в месте назначения, если они одинаковые или более новые ...
ericslaw
2
Если вы используете -u, он снова скопирует тот же самый большой файл. -u помогает, только если вы пытаетесь возобновить большую рекурсивную копию.
Рори
7

В случае, если прерванная cpкопия была рекурсивной, вы можете продолжить с помощью rsync, включая эту опцию --recursive.

пример

Прерванная команда копирования:

cp -r source-directory destination-directory

Предположим , что destination-directoryуже существует, так что эта команда копия создан каталог с именем source-directory в destination-directory . Это может быть возобновлено через:

rsync --recursive --append source-directory destination-directory

Обратите внимание, что конечные косые черты имеют точное значение в параметрах пути rsync.

В этом случае команда копирования могла получить аргумент source-directoryили source-directory/, это не имеет значения. Однако в команде rsync это должно быть source-directory без завершающей косой черты .

Ян-Филипп Герке
источник