rsync: Копирование директорий на USB Flash

Автор SerW, 24 января 2025, 18:08:38

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

SerW

Википедия: https://en.wikipedia.org/wiki/Rsync.
Linux man page: https://linux.die.net/man/1/rsync.

Доброй ночи!
Подскажите, если вот у меня есть директория '$HOME/Public', то как мне ее скопировать в '/media/dragonserw/Ventoy/DragonSerW-iso', учитывая, что в '/DragonSerW-iso' могут быть более старые версии файлов (под другими или теми же самыми именами)?
В общем, я хочу сделать зеркало '/Public' в '/DragonSerW-iso' с удалением более новых файлов из целевой директории.
И еще, будет просто сказочно, если в команде будет оператор `time`, который покажет реальное затраченное на операцию время :-)
Нашел, кстати, вот такой метод демонстрации затраченного и оставшегося времени, тоже будет полезно для меня: https://serverfault.com/a/1039333.
Сергей Швайко » DragonSerW

dzhoser

rsync -av --delete --update "$HOME/Public/" "/media/dragonserw/Ventoy/DragonSerW-iso/"
Пояснение:
-a (архивный режим): сохраняет права доступа, временные метки, символические ссылки и другие атрибуты файлов.

-v (verbose): выводит подробную информацию о процессе копирования.

--delete: удаляет файлы в целевой директории, которые отсутствуют в исходной директории. Это обеспечивает точное зеркалирование.

--update: не перезаписывает файлы в целевой директории, если они новее, чем файлы в исходной директории. Это позволяет сохранить более новые файлы в целевой директории.

Важные моменты:
Обратите внимание на слэш (/) в конце пути исходной директории ($HOME/Public/). Это означает, что копируется содержимое директории, а не сама директория.

Если вы хотите скопировать саму директорию Public внутрь целевой директории, уберите слэш в конце:

rsync -av --delete --update "$HOME/Public" "/media/dragonserw/Ventoy/DragonSerW-iso/"Пример:
Если в $HOME/Public есть файлы file1.txt и file2.txt, а в /media/dragonserw/Ventoy/DragonSerW-iso уже есть file1.txt (более новая версия) и file3.txt, то после выполнения команды:

file1.txt в целевой директории останется без изменений (так как он новее).

file2.txt будет скопирован из исходной директории.

file3.txt будет удален из целевой директории (так как его нет в исходной директории).
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

ek-nfn

Я бы еще добавил параметр -L для копирования реальных файлов при наличии симлинков в источнике
Debian 12  -> Devuan 5 xfce -> MX Linux 23