Хтось може мені сказати, що це робить?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Чи видаляється bkp01
та offbk2
чи надсилається журнал offbkp01.log
?
Хтось може мені сказати, що це робить?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Чи видаляється bkp01
та offbk2
чи надсилається журнал offbkp01.log
?
Відповіді:
Щоб розбити це на частини, є два основні розділи, а потім підсумок та примітки:
rsync
команда:rsync -uva --delete /srv/bkp01 /srv/offbk2/
rsync-command > ~/offbkp01.log
rsync
команда:rsync
- Я припускаю, що це не потребує пояснень (але надамо, якщо вимагається).-uva
- Набір варіантів одного символу, який є (коротка, а потім довга форма):
-u
--update
- Повідомляє rsync, що всі модифікації повинні застосовуватися лише до файлів у пункті призначення, які мають той самий вік (та різного розміру) або старші, ніж ті, що містяться у джерелі. Тобто, rsync повинен передавати лише зміни з джерела, які оновлювали б призначення, але він не повинен вносити жодних змін, які б перетворили файл призначення у старішу версію.
Є деякі винятки. Різниці в типі (наприклад, один - файл, а інший - каталог) призведе до оновлення незалежно від дати. Символьні посилання та інші спеціальні файли ігнорують цю опцію. І, що важливо, це не впливає на те, які файли видаляються.
-v
--verbose
- Збільшує кількість інформації, яку rsync роздруковує під час виконання. Без цього rsync нічого не надрукує (майже?). Якщо цей параметр є, rsync підкаже, які файли передаються, і в кінці поставить підсумок. Більше v
s збільшують надруковану інформацію, хоча на сторінці man говориться, що більше двох v
s слід використовувати лише під час налагодження. -a
--archive
- Це еквівалентно ряду інших варіантів ( -rlptgD
), упакованих разом. Як свідчить довге ім'я, це швидкий спосіб встановити багато загальних варіантів архівації файлів і каталогів. Це буде:-r
--recursive
- Показує rsync копіювати каталоги рекурсивно. Без цього чи більш конкретного -d
--dirs
варіанту, rsync просто пропустить будь-які каталоги, з якими він стикався (та розповість про це у своєму виході). -l
--links
- Коли джерелом є симпосилання, створіть символьне посилання за призначенням. Залежно від інших параметрів, посилання посилань можуть інакше бути пропущеними або перетворені в повністю окрему копію (тобто справжній каталог із вмістом (або іншою копією файлу) замість символьної посилання). -p
--perms
- Встановлює дозволи дозволених файлів такими ж, як вихідні файли. -t
--times
- Встановлює час модифікації файлів призначення таким самим, як вихідні файли. Оскільки синхронізація цих часів робить алгоритм rsync більш ефективним, ти, як правило, завжди хочеш, щоб це використовувалось явно або неявно. -g
--group
- Встановлює атрибут групи пункту призначення таким же, як джерело. За замовчуванням асоціюється за іменем, але за певних обставин повернеться до ідентифікаційного номера групи. Якщо приймаюча rsync не працює як суперкористувач (або підробляє її --fake-super
), можуть бути встановлені лише групи, до яких належить користувач, який викликав rsync з боку прийому . В іншому випадку група буде просто встановлена у групі за замовчуванням того самого користувача, згаданого раніше. -D
- рівнозначно варіантам --devices
і --specials
разом. Вони означають:--devices
- Передаються символьні та блокові файли пристроїв. Не має ефекту, якщо приймаюча rsync не працює як суперкористувач (або підробляє її --fake-super
). --specials
- Передаються спеціальні файли (як сокети) (їх інакше не було б). --delete
- Показує rsync для видалення файлів, які перебувають у пункті призначення, але не у джерелі. На це НЕ впливає встановлений вище варіант оновлення (дійсно, як це могло бути, оскільки більшість файлових систем не збереже необхідні дані, щоб побачити, яка дія була новішою?). Цей параметр діє на джерела після розширення підстановки / глобального розширення, тому dir / * не є тим самим, як dir /. Деякі важливі зауваження:--dry-run
спершу спробуйте скористатись опцією, яка здійснить передачу прикидок, що дозволяє переконатися, що не було внесено випадкових змін. --ignore-errors
параметра, хоча ви, мабуть, цього не хочете / не захочете робити.--delete-during
алгоритм використовується. Якщо ресивер старше, тоді --delete-before
використовується. Якщо важливо, щоб файли підтримували певну послідовність у разі виникнення помилки (наприклад, нічого не видаляти, поки не будуть внесені всі інші зміни), слід скористатися більш конкретним варіантом, ніж типовий./srv/bkp01
- Вихідний файл або каталог. Існує кілька детальних правил щодо того, що це означає, якщо на кінці каталогу є / не є косою рисою, а також, якщо існує інший каталог. Ви можете побачити розділ USAGE на сторінці man для детальної інформації, але тут відсутність останньої косої риси означає, що цей каталог буде скопійований у пункт призначення, а не вміст цього каталогу, скопійований у пункт призначення. Те саме, якщо це файл, а не каталог./srv/offbk2/
- Каталог призначення. Взагалі, це завжди буде останній елемент, перелічений у розділі команд rsync, якщо тільки не використовується параметр, щоб вказати його в іншому місці команди.>
- Це перенаправляє stdout (стандартний висновок) з того, що знаходиться зліва на файл праворуч, перетворюючись на його вміст і створюючи файл (якщо можливо), якщо він ще не існує. Деякі примітки:2>&1
в самому кінці команди вище. Порядок важливий, тому будьте обережні, узагальнюючи, де це ставити. Магічне число, що 1
відноситься до stdout, 2
посилається на stderr, &
є (по суті) "адресою", а фрагмент повного команди означає "перенаправлення виводу stderr в потік stdout". >>
. Метод перенаправлення stderr на те саме місце залишається тим самим. 1> stdout_file 2> stderr_file
. Ви можете також використовувати >>
замість >
цієї команди, додавши замість цього.~
- Це скорочення до домашнього каталогу поточного користувача та є частиною наступного біта.~/offbkp01.log
- файл offbkp01.log всередині домашнього каталогу поточного користувача. Тут буде розміщений вихід команди rsync через перенаправлення на >
.Підсумовуючи, ця команда:
/srv/bkp01
, /srv/offbk2/bkp01
, і він видалить все, /srv/offbk2/
що не знаходиться/srv/bkp01
, з такими умовами:
/srv/offbk2/
те , що новіше , ніж час модифікації на /srv/bkp01
, він не буде оновлюватися , якщо обидва елементи все ще той же самий тип (звичайний файл, каталог або символічна (? )). Крім того, rsync роздрукує певну інформацію про те, що вона робить (зокрема, які файли передаються та остаточний підсумок ), яку оболонка запише у файл ~/offbkp01.log
. Цей файл журналу буде створений заново, якщо він ще не існує, і буде перезаписаний, якщо він вже існує.
Примітка: --fake-super
це варіант, який використовується для того, щоб викликати rsync для імітації дій суперкористувача. Це робиться, використовуючи розширені атрибути файлів для зберігання атрибутів, які він не міг встановити, не маючи більших привілеїв. Реальна версія кожного атрибута встановлюється у будь-якому сенсі, враховуючи наявні параметри та привілеї. Хоча це робить зручне робити резервні копії, навіть якщо у вас немає привілеїв суперкористувача, слід також зазначити, що це може становити ризик для безпеки, більший, ніж використання rsync в цілому, оскільки реальні атрибути безпеки не можуть бути встановлені належним чином, хоча інформація про них була резервна.
Джерело: багато часу працює з rsync та читає її man-сторінку .
З посібника:
- видалити
Це повідомляє rsync видаляти сторонні файли з боку прийому (ті, які не перебувають на стороні надсилання), але лише для каталогів, які синхронізуються. Потрібно попросити rsync надіслати весь каталог (наприклад, "dir" або "dir /"), не використовуючи підстановку для вмісту каталогу (наприклад, "dir / *"), оскільки wildcard розширюється оболонкою, і rsync отримує запит для передачі окремих файлів, а не батьківського каталогу файлів. Файли, які виключаються з передачі, також виключаються з видалення, якщо ви не використовуєте параметр --delete-виключено або позначте правила лише як відповідні на стороні, що надсилає (див. Розділ включення / виключення модифікаторів у розділі ПРАВИЛА ФІЛЬТРА).
Таким чином, він видалить файли з пункту призначення, які не входять до вихідного каталогу, якщо ви не використовували підстановку.
Каталог джерел:
1.txt
2.txt
3.txt
Каталог призначення:
4.txt
4.txt піде після rsync і 1.txt, 2.txt і 3.txt будуть в пункті призначення.
Щодо інших речей:
uva
Ні, це лише видалення сторонніх файлів з bkp01
каталогу.
Також:
-u
, --update
- пропустити новіші файли на приймачі-v
, --verbose
- збільшити багатослівність-a
, --archive
- режим архіву; дорівнює -rlptgoD (немає -H, -A, -X)Виведення rsync -uva --delete /srv/bkp01 /srv/offbk2/
команди надсилається у ~/offbkp01.log
файл, використовуючи оператор перенаправлення ( >
), а не друкується у вашому терміналі. Якщо файл не існує, він буде створений. Якщо файл існує, старий вміст його буде стерто.
Див. Для man rsync
отримання додаткової інформації.
bkp01
. Він просто видаляє сторонні файли - тобто ті, які не існують у джерелі - з пункту призначення.
rsync
Віддалена копія файлу - синхронізуйте дерева файлів на локальних дисках, каталогах або в мережі.
-u update
-v verbose
-a archive
--delete --> delete
Тут вона видалить файли всередині offbk2 .
Тоді висновок результату (успіху чи ні) буде переспрямовано на цей файл журналу.