Онлайн робочі станції OnWorks Linux та Windows

логотип

Безкоштовний онлайн-хостинг для робочих станцій

<Попередній | зміст | Наступна>

Синхронізація файлів і каталогів

Звичайна стратегія збереження резервної копії системи передбачає синхронізацію одного або кількох каталогів з іншим каталогом (або каталогами), розташованими або в локальній системі (зазвичай на якомусь знімному пристрої зберігання даних), або у віддаленій системі. Наприклад, ми можемо мати локальну копію веб-сайту в розробці та час від часу синхронізувати її з «живою» копією на віддаленому веб-сервері.

У Unix-подібному світі найкращим інструментом для цього завдання є rsync. Ця програма може синхронізувати як локальні, так і віддалені каталоги за допомогою Протокол віддаленого оновлення rsync, що дозволяє rsync щоб швидко виявити відмінності між двома каталогами та виконати мінімальний обсяг копіювання, необхідний для їх синхронізації. Це робить rsync дуже швидкий і економічний у використанні в порівнянні з іншими видами програм копіювання.

rsync викликається таким чином:

rsync параметри джерело призначення

де джерело та призначення є одним із наступних:


● Локальний файл або каталог

● Віддалений файл або каталог у формі [користувач@]хост:шлях

● Віддалений сервер rsync, визначений з URI rsync://[користувач@]хост[:порт]/шлях

Зауважте, що джерелом або призначенням має бути локальний файл. Дистанційне копіювання не підтримується.

Давай спробуємо rsync на деяких локальних файлах. Спочатку почистимо нашу Foo каталог:


[me@linuxbox ~]$ rm -rf foo/*

[me@linuxbox ~]$ rm -rf foo/*


Далі ми синхронізуємо дитячий майданчик каталог з відповідною копією в Foo:


[me@linuxbox ~]$ rsync -av ігровий майданчик foo

[me@linuxbox ~]$ rsync -av ігровий майданчик foo


Ми включили обидва -a варіант (для архівування-викликає рекурсію та збереження атрибутів файлу) та -v опція (докладний вихід), щоб зробити a дзеркало в дитячий майданчик каталог всередині Foo. Під час виконання команди ми побачимо список файлів і каталогів, які копіюються. В кінці ми побачимо таке підсумкове повідомлення:



надіслано 135759 байт отримано 57870 байт 387258.00 байт/сек загальний розмір 3230 прискорення 0.02

надіслано 135759 байт отримано 57870 байт 387258.00 байт/сек загальний розмір 3230 прискорення 0.02


із зазначенням кількості виконаного копіювання. Якщо ми знову запустимо команду, ми побачимо інший результат:



[me@linuxbox ~]$ rsync -av ігровий майданчик foo

створення списку файлів ... виконано


надіслано 22635 байт отримано 20 байт 45310.00 байт/сек загальний розмір 3230 прискорення 0.14

[me@linuxbox ~]$ rsync -av ігровий майданчик foo

створення списку файлів ... виконано


надіслано 22635 байт отримано 20 байт 45310.00 байт/сек загальний розмір 3230 прискорення 0.14


Зверніть увагу, що не було списку файлів. Це відбувається тому rsync виявлено, що між ними немає відмінностей ~/ігровий майданчик та ~/foo/playground, і тому не потрібно було нічого копіювати. Якщо ми змінимо файл у дитячий майданчик і біжи rsync знову:


[me@linuxbox ~]$ сенсорний майданчик/реж.-099/файл-Z [me@linuxbox ~]$ rsync -av ігровий майданчик foo створення списку файлів ... виконано

дитячий майданчик/реж.-099/спр.-З

надіслано 22685 байт отримано 42 байт 45454.00 байт/сек загальний розмір 3230 прискорення 0.14

[me@linuxbox ~]$ сенсорний майданчик/реж.-099/файл-Z [me@linuxbox ~]$ rsync -av ігровий майданчик foo створення списку файлів ... виконано

дитячий майданчик/реж.-099/спр.-З

надіслано 22685 байт отримано 42 байт 45454.00 байт/сек загальний розмір 3230 прискорення 0.14


ми це бачимо rsync виявив зміну та скопіював лише оновлений файл.

Як практичний приклад розглянемо уявний зовнішній жорсткий диск, який ми використовували раніше дьоготь. Якщо ми приєднаємо диск до нашої системи і знову змонтуємо його на /me-dia/BigDisk, ми можемо виконати корисне резервне копіювання системи, спочатку створивши каталог з іменем /резервна копія на зовнішньому диску, а потім за допомогою rsync щоб скопіювати найважливіші речі з нашої системи на зовнішній диск:



[me@linuxbox ~]$ mkdir /media/BigDisk/backup

[me@linuxbox ~]$ sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/backup

[me@linuxbox ~]$ mkdir /media/BigDisk/backup

[me@linuxbox ~]$ sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/backup


У цьому прикладі ми скопіювали файл / Etc, / Головна та / usr / local каталогів з нашої системи на наш уявний пристрій зберігання даних. Ми включили --видалити опція видалення файлів, які могли існувати на пристрої резервного копіювання, але більше не існували на вихідному пристрої (це не має значення під час першого створення резервної копії, але буде корисно для наступних копій). Повторіть процедуру підключення зовнішнього диска і запустіть це rsync Команда була б корисним (хоча й не ідеальним) способом збереження резервної копії невеликої системи. Звичайно, псевдонім також буде корисним і тут. Ми можемо створити псевдонім і додати його до нашого

.bashrc, щоб забезпечити цю функцію:


псевдонім backup='sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/backup'

псевдонім backup='sudo rsync -av --delete /etc /home /usr/local

/media/BigDisk/backup'


Тепер все, що нам потрібно зробити, це підключити наш зовнішній диск і запустити резервна копія команда виконати роботу.


 

Найпопулярніші хмарні обчислення ОС на OnWorks: