Ось вступ до використання 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.txt1, а ваш диск - /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.