Как скрыть оставшиеся файлы после неудачной попытки

Я пытаюсь скопировать большой каталог с одного диска на другой. Я ошибочно вышел из системы до того, как он был закончен, поэтому только около 80% файлов копируются. Есть ли возможность копировать оставшиеся файлы без запуска с нуля?

Я бы попробовал,

rsync -a /from/file /dest/file 

вы можете использовать другие параметры, такие как --append , -P (--partial --progress) . См. Man rsync для получения дополнительной информации.

Или, если вы используете cp используйте cp -u .

от man cp :

 -u, --update copy only when the SOURCE file is newer than the destination file or when the destination file is missing. 

Для частичной передачи файлов, cp может не быть тем, что вам нужно.

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

Пример:

 $ rsync -aPEmivvz from/ to/ 

(скопирует from/ в каталог to/ )

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

Набор -aPEmivvz – это мой стандартный выбор для выбора, когда вы копируете файлы по сетям или внешним дискам, включая подключаемые устройства, например SD-карты и т. Д.

Эти переключатели я использую почти всегда:

-a : «архив», включает -rlptgo (рекурсивные, символические -rlptgo как символические ссылки, разрешения, время, группа, владелец)

-P : «частичный прогресс» показывает хороший индикатор выполнения для каждого файла

-E : «исполняемость» сохраняет ли исполняемый файл или нет

-m : "noempty" чернослив

-i : «сводная» сводка изменений печати для всех обновлений

-vv : "более подробный"

-z : "сжатие"

В этом случае вы, скорее всего, хотите, а не cprsync .

Просто рекурсивное копирование одной структуры каталогов в новое место:

 rsync -av /path/to/source /path/to/destination 

Вы не должны использовать cp для этого. Как утверждали другие, это не правильный инструмент для работы. Правильный инструмент будет зависеть от ваших целей.

Если вам просто нужна прямая копия:

rsync /source /destination с некоторым уровнем флагов. См. Другие ответы для некоторых действительно хороших примеров.

Если вы хотите иметь двунаправленные обновления

unison – это путь. Rsync не очень хорошо справляется с разрешением конфликтов с двунаправленной синхронизацией. Специально удаляет. Итак, вы хотите, чтобы двунаправленные копии unison

Если вы хотите, чтобы резервные копии и файлы были текстовыми, вы можете попробовать использовать git . Git можно запускать локально, нет необходимости в «сервере». Фактически, git-серверы – это только методы совместного использования файлов. У вас может быть полное репо на резервном диске и «нажать» на него. Опять же, это действительно работает, только если файлы основаны на тексте, и вы пытаетесь получить одностороннюю резервную копию.

Опять же, если вы собираетесь создать резервную копию (а не только один раз), посмотрите на deja-dupe, BackIntime или аналогичные параметры. Они делают моментальные снимки данных в определенный момент времени. Все они управляют rsync под капотом.

Вы также можете снова скопировать все файлы, запросить подтверждение для каждой перезаписи, затем автоматически ответить на вопрос:

 yes n | cp -i /source /dest 

(вы, вероятно, использовали больше опций, например -r , поэтому просто добавьте их, например, cp -pri /source /dest …)

Используйте команду rsync со следующими параметрами:

 rsync --progress --partial --append /source_file /destination_file