Продолжить прерванный 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 без завершающей косой черты .


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.