Відповіді:
Я б спробував,
rsync -a /from/file /dest/file
Ви можете використовувати інші варіанти , як --append
, -P (--partial --progress)
. Для отримання додаткової інформації див. 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
: "непусті" чорнослив порожні калини
-i
: "резюме" друкувати підсумок змін для всіх оновлень
-vv
: "більше багатослівного"
-z
: "стиснення"
Не слід використовувати cp
для цього. Як зазначають інші, це не правильний інструмент для роботи. Правильний інструмент буде залежати від ваших цілей.
Якщо ви хочете просто копію:
rsync /source /destination
з деяким рівнем прапорів. Дивіться інші відповіді на кілька справді хороших прикладів.
Якщо ви хочете мати двонаправлені оновлення
unison
це шлях. Rsync не дуже добре вирішує конфлікт із двонаправленими синхронізаціями. Спеціально видаляє. Таким чином, ви хочете, щоб двосторонні копії загорілисяunison
Якщо ви хочете створити резервні копії та файли на основі тексту, то можете спробувати використовувати git
. Git можна запускати локально, немає необхідності в "сервері". Насправді, git-сервери - це лише методи обміну файлами. Ви можете повністю мати git repo на резервному диску та "натиснути" на нього. Знову ж таки, це дійсно спрацьовує, якщо файли базуються на тексті та якщо ви намагаєтесь зробити резервну копію в один бік.
Знову ж таки, якщо ви збираєтесь зробити резервну копію (і не лише один раз), тоді подивіться на deja-dupe, BackIntime або подібні варіанти. Вони роблять знімки даних у певний момент часу. Всі вони виконують rsync під кришкою.