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