Я пытаюсь скопировать большой каталог с одного диска на другой. Я ошибочно вышел из системы до того, как она была закончена, поэтому скопировали только около 80% файлов. Можно ли скопировать оставшиеся файлы, не начиная с нуля?
23
Я бы попробовал,
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 -u
может не заботиться, поскольку он проверяет только временные метки, а не размер ... Поэтому вамtouch
сначала нужно будет получить доступ к исходным файлам, если вам нужно его использовать , (Или просто используйтеrsync
.)Для частичной передачи файлов
cp
может быть не то, что вам нужно.Я предлагаю использовать
rsync
вместо этого. Даже если передача не удалась, вы можете просто запустить команду позже, и она скопирует только отсутствующие файлы.Пример:
(скопирует
from/
вto/
каталог)Поскольку
rsync
выполняется синхронизация и проверка после каждой передачи, обеспечение правильного копирования файлов является тривиальным.Swich набор
-aPEmivvz
мой стандартный идти к выбор, когда копирование файлов по сети или внешних накопителей, в том числе плагин устройств, как SD-карты и т.д.Эти ключи я использую почти всегда:
-a
: "архив", включает в себя-rlptgo
(рекурсивные, символические ссылки как символические ссылки, разрешения, время, группа, владелец)-P
: "частичный прогресс" показывает хороший индикатор выполнения для каждого файла-E
: «исполняемый» сохраняет ли исполняемый или нет-m
: "noempty" чернослив пустые dirs-i
: "сводка" распечатать сводку изменений для всех обновлений-vv
: "более многословный"-z
: "сжатие"источник
То, что вы, вероятно, хотите, а не
cp
в этом случаеrsync
.Просто рекурсивно копируем одну структуру каталогов в новое место:
источник
Вы не должны использовать
cp
для этого. Как утверждают другие, это не правильный инструмент для работы. Правильный инструмент будет зависеть от ваших целей.Если вы просто хотите получить прямую копию:
rsync /source /destination
с некоторым уровнем флагов. Посмотрите другие ответы для некоторых действительно хороших примеров.Если вы хотите получать двунаправленные обновления
unison
это путь Rsync не очень хорошо справляется с разрешением конфликтов с помощью двунаправленной синхронизации. Специально удаляет. Таким образом, вы хотите, чтобы двунаправленные копии запускалисьunison
Если вы хотите, чтобы резервные копии и файлы были текстовыми, то вы можете попробовать использовать
git
. Git может быть запущен локально, нет необходимости в «сервере». На самом деле, git-серверы - это только методы обмена файлами. Вы можете полностью создать git-репо на резервном диске и «протолкнуть» его. Опять же, это действительно работает, только если файлы основаны на тексте, и вы пытаетесь получить одностороннюю резервную копию.Опять же, если вы собираетесь сделать резервную копию (а не только один раз), посмотрите на deja-dupe, BackIntime или аналогичные параметры. Они делают снимки данных в определенный момент времени. Все они запускают rsync под капотом.
источник
Вы также можете снова скопировать все файлы, запросить подтверждение для каждой перезаписи, а затем автоматически ответить «нет» на вопрос:
(вы, вероятно, использовали больше опций, например
-r
, просто добавьте их какcp -pri /source /dest
...)источник
Используйте команду
rsync
со следующими параметрами:источник