страховочная сетка — генератор rsync, который отказывается от голого --delete
Пути, исключения и канал на входе — готовая команда на выходе, dry-run по умолчанию, и каждый --delete приходит с датированной резервной сеткой, которая делает зеркало обратимым.
■ space · страховочная сетка
Dry-run по умолчанию, явный шаг взведения и резервная сетка — генератор отказывается выдавать голый --delete.
Сетка — это два флага — --backup --backup-dir=DEST/_rsync_backup_$(date +%F) — и rsync переносит каждый файл, который собирался удалить, в ту датированную папку вместо стирания.
Пути, удалённый хост, исключения и лимиты канала — на вход; готовая для вставки команда — на выход. Ничто из набранного не покидает страницу.
ПОЧЕМУ --DELETE ЗАСЛУЖИВАЕТ ПРЕДУПРЕЖДЕНИЯ
Потому что договор rsync — сделать назначение равным источнику, а --delete распространяет его на удаления. Страница man: "delete extraneous files from the destination dir."
Extraneous = всё, чего нет у источника — включая то, чего не хватает потому, что вы указали не тот источник, воткнули не ту флешку или опечатались в пути.
Один генератор с первой страницы даже вешает на свой вывод ярлык "AI-generated and not yet checked for validity" — над командой удаления. Четыре флага, которые наносят настоящий ущерб:
| флаг | что делает | что делает, когда вы ошиблись |
|---|---|---|
--delete | файлы назначения, которых нет в источнике, удаляются | неверный путь источника → файлы "extraneous" → исчезли |
src/ vs src | завершающий слэш копирует содержимое; без слэша копируется сам каталог | один символ — совершенно иная раскладка назначения |
-a | архив: рекурсия + права, времена, владельцы, симлинки | упущен → "backup", который им молча не является |
--partial | хранит недопереданные файлы при обрыве | капризный линк → весь перенос заново с нуля |
Строка про завершающий слэш — классика. Дока rsync говорит, что слэш в конце источника "changes this behavior to avoid creating an extra directory at the destination."
Простыми словами: src/ выливает содержимое в назначение; src создаёт dest/src и выливает туда. Два символа.
Машина ниже показывает, какая фраза действует по мере набора — слэш съел больше домашних каталогов, чем rm -rf за всю карьеру.
СТРАХОВОЧНАЯ СЕТКА
Пути на входе, готовая команда на выходе. Команда идёт с -n: прочтите, что произошло бы, затем щёлкните взведение.
Как только в деле --delete, генератор отказывается выдавать голое удаление — сетка прицепляется сама.
Взвести удаление безопасно: не убирайте безопасность — добавьте сетку. С --backup --backup-dir rsync сперва уносит удалённые или перезаписанные файлы в датированную папку.
Зеркало всё равно выходит точным. Обратимость — разница между зеркалом и воспоминанием.
# the record's worked example — armed, net attached:
rsync -a --delete \\\
--backup --backup-dir=/mnt/backup/_rsync_backup_$(date +%F) \\\
/mnt/usb/ /mnt/backup/
проверка: man rsync → --backup читается "make a backup of every file installed" · строки --backup-dir падают в DEST/_rsync_backup_<date>/, а не в бездну
ЧТО ГЕНЕРАТОР ПРОКИДЫВАЕТ
Набор, покрывающий почти каждый реальный перенос, сгруппированный так, как вы реально принимаете решения:
- Пути — локальные или удалённые с любой стороны (
user@host:/path), порт SSH прокидывается через-e "ssh -p 2222", когда он не 22. - Направление — переключатель завершающего слэша, с фразой содержимое-против-каталога, печатаемой вживую.
- Фильтры — маски
--excludeс заготовками для обычных подозреваемых:.git,node_modules, кэши, логи. - Манеры — сжатие
-z,--bwlimit, чтобы ночная копия перестала забивать канал,-Pдля прогресса и продолжения,-cкогда mtime врёт. - Дорожка взведения — dry-run по умолчанию, явный шаг взведения, сетка автоматически цепляется к любому
--delete.
Как калькулятор VRAM GGUF: один HTML-файл, арифметика в вашем браузере — ничто из набранного не покидает страницу, потому что инструмент про безопасные копии не должен докладывать домой.
MIT, один файл, ни шага сборки, на github.com/mrsaynothing/rsync-builder. Если поток взведения кажется нравоучением — это работает фича.
ГДЕ ЭТО ЛЕЖИТ В ЯЩИКЕ ИНСТРУМЕНТОВ
Генератор сочиняет команду; соседи по ящику держат теорию. Rsync vs scp — почему дельта-перенос обыгрывает глупую копию, и когда scp нормально.
Cron против таймеров systemd — половина планирования; журнальная половина «а запустилось ли» лежит в шпаргалке journalctl.
Dry-run, который вы пропустили, — это удаление, которого вы не хотели.
конец страховочной сетки · ничего не скачано · всё локально