Ось вступ до використання rsync
для резервного копіювання на Pi. Після створення початкового резервного копіювання оновлення цього способу відбувається набагато швидше, ніж постійно копіювання всього зображення. Це можна зробити на локальному жорсткому диску або через мережу.
Ви фактично не хочете повної копії запущеної системи як резервної копії, оскільки частина матеріалів, нібито, у файловій системі існує лише під час виконання. Включення цього резервного копіювання та його використання для відтворення зображення пізніше може створити проблеми для вас.
Є й інші винятки. rsync
можна прийняти список ( глобальних ) шаблонів, які потрібно виключити, і їх можна прочитати з файлу, тому спочатку перейдемо до того, що має бути в такому файлі. Зауважте, що записи мають форму, /directory/*
а не /directory
. Це тому, що ми хочемо, щоб вони існували, але ми не хочемо нічого копіювати в них.
/proc/*
/sys/*
Їх насправді не існує на диску. Вони є інтерфейсом до ядра, який створює та підтримує їх у пам'яті . Якщо ви скопіюєте їх, а потім скопіюйте їх назад у систему та завантажте їх, це буде (у кращому випадку) безглуздим, оскільки ядро використовує їх як точки монтажу інтерфейсів [Якщо ви хочете подивитися, що відбувається під час монтажу розділу файлової системи у каталозі з даними в ньому спробуйте. Це працює і не принесе шкоди, але те, що було в каталозі, зараз недоступне.]
Зауважте, що критично важливо, щоб існували точки монтажу /sys
та /proc
монтажу. Але вони нічого не повинні містити. Далі:
/dev/*
dev
Каталог не зовсім те ж саме , як proc
і , sys
але для наших цілей. Якщо ви вважаєте, що вам слід зберегти це, щоб ви могли мати однакові вузли пристрою у вашій резервній копії чи щось таке, ви помиляєтесь . Не турбуйся. Не копіюйте dev
. Колись давно Linux працював так, але більше не працює.
/boot/*
Це свого роду окремий випадок з найбільш (мабуть, усіма) з пі-специфічних дистрибутивів, таких як Raspbian. Це фактично точка монтування для першого, vfat, розділу. Ми будемо з цим розбиратися окремо. Що б ви не робили, не турбуйтеся включати це сюди, бо, знову ж таки, це точка кріплення.
/tmp/*
/run/*
/run
як правило, також не на диску, це в пам'яті. Можливо, це /tmp
може бути занадто (це врятувало б трохи дії на SD-картці), але в будь-якому випадку, як випливають з назви, це не місця для зберігання постійних даних. Програми, які їх використовують, очікують, що вони можуть бути видалені при кожному завантаженні.
/mnt/*
/media/*
Це особливо важливо, якщо ви плануєте створити резервну копію на жорсткий диск або USB-накопичувач, і пристрій знаходиться в /mnt
або /media
(автоматичний автоматизатор має тенденцію використовувати останні), тому що якщо ви не виключаєте розташування цих пристроїв у файловій системі, ви створити цикл, який резервує вміст диска до себе, поки йому не вистачить місця. Я думаю, що rsync
може бути досить розумним, щоб помітити щось таке, що німе, але намагатися уникати тестування приміщення.
Про фактичну резервну копію: Створіть каталог для резервного копіювання на локально встановленому жорсткому диску, USB-річці тощо - наприклад, "pi_backup". Можна по черзі зробити резервну копію у віддаленому місці за допомогою ssh
(див. Нижче) або за допомогою мережної файлової системи, але це, мабуть, займе певний час.
Якщо файл, який містить список для виключення, дорівнює /rsync-exclude.txt
1, а ваш диск - /mnt/usbhd
зробити фактичну резервну копію:
rsync -aHv --delete --exclude-from=/rsync-exclude.txt / /mnt/usbhd/pi_backup/
Зауважте, що на останньому косому кутіpi_backup/
.
Це займе певний час і отримає багато результатів (якщо ви хочете вивчити це в журналі, замість цього додайте > rsync.log
). --delete
перший раз безглуздо, але для оновлення резервної копії використовуйте її. Це гарантує, що матеріали, які ви пізніше видалили з Pi, також видаляються із резервної копії. a
Набори рекурсії в каталогах і переконується все атрибути файлу відповідності. -H
полягає в збереженні жорстких посилань 2 , v
призначений для багатослівних, тому ви отримуєте певний вихід (інакше rsync
тихо). Дивіться man rsync
докладніше.
Існує ярлик, за допомогою якого ви можете пропустити --exclude-from
файл. Якщо ви впевнені, що всі речі, які ви не хочете копіювати ( /tmp
тощо), знаходяться в окремих файлових системах, ви можете просто скористатися:
rsync -axHv --delete-during / /mnt/usbhd/pi_backup/
-x
було вставлено. Це коротка форма --one-file-system
, яка говорить rsync
не перетинати межі файлової системи. Особисто я віддаю перевагу --exclude-from
, але, наприклад, Raspbian за замовчуванням, --one-file-system
буде добре працювати. Ви можете використовувати обидва, якщо хочете бути -x
обережними: D
Це не зовсім повне резервне копіювання. Досить, якщо ви нічого не вклали, boot
і ви добре використовуєте резервну копію, щоб просто відновити систему, вставивши картку в комп'ютер і запустивши:
rsync -av --delete-during /mnt/usbhd/pi_backup/ /mnt/sdcard_partition2/
Ви також можете це зробити з картою з новим зображенням на ній (припускаючи, що це те саме, що і ваше базове зображення), хоча це трохи неефективно, якщо вам доведеться створити зображення (тому що ви збираєтеся перезаписати більшість його). Ви також можете підключити іншу SD-карту через USB-адаптер із таким зображенням на ній, а також використати вищевказаний метод для підтримки дублікату карти.
Якщо ви помістили речі /boot
(наприклад, користувацьке ядро), в тому числі /boot/config.txt
, ви хочете створити резервну копію (досить просто - це не так багато). Просто зробіть це окремо, і коли ви відновите, цей матеріал перейде в перший розділ.
Дивіться тут, якщо ви хочете створити порожнє зображення в стилі Raspbian, в яке потім можна створити резервну копію. Ви можете використовувати аналогічну методологію для створення порожньої карти стилю Raspbian - замість того, щоб мати справу з .img
файлом, ви мали б справу з реальним пристроєм (наприклад /dev/sdb
), тобто все, що вам потрібно зробити, це створити таблицю розділів, fdisk
а потім формат /dev/sdb1
і sdb2
(або що завгодно) з mkfs
.
Але скопіювати все зображення простіше! Чому це турбує?
Це не так складно; Я відновив порожню карту (відформатовану за останнім посиланням) за 10 хвилин. Так, просто використовувати dd
все це простіше (якщо ви знайдете такі речі, як слова заплутані ...), АЛЕ це потребує досить тривалого часу кожного разу, коли ви хочете оновлювати резервну копію, оскільки ви повинні робити це на 100% щоразу. Використовуючи rsync
, коли резервна копія існує, її оновлення відбувається набагато швидше, тому ви можете налаштувати це безболісно щодня через cron. По мережі навіть. Кожні шість годин Чим частіше ви це робите, тим менше часу знадобиться.
rsync
через ssh
Ось приклад:
rsync [options] --rsh="ssh [ssh options]" root@[the pi ip]:/ /backup/rpi/
"Параметри" були б, наприклад, -av --delete --exclude-from=/rsync-exclude.txt
"ssh параметри" - це те, що ви зазвичай використовуєте (якщо є що). Ви повинні мати кореневої доступ через ssh
зробити це для цілей резервного копіювання системи (встановлюється PermitRootLogin=yes
в /etc/ssh/sshd_config
і перезапустити сервер).
1 Ви повинні зберегти цей файл. Ви можете розміщувати в ньому коментарі на рядках, що починаються з #
або ;
. Сюди може входити фактична rsync
команда, яку можна скопіювати після копіювання, тому не потрібно її пам’ятати кожен раз.
2 Завдяки Kris за те, що вказав, rsync
це не робиться автоматично.
dd
, дивітьсяrsync
.