Фон
Який "правильний" метод використання rsync для резервного копіювання даних? Причина, чому я прошу "правильний" метод, полягає в тому, що мій минулий досвід використання rsync призвів до дозволів, маски файлів / папок та часових позначок. Отже, це питання прагне зрозуміти, як я можу використовувати rsync для резервного копіювання даних, не наштовхуючись на будь-який дозвіл, маску файлів / папок чи часові позначки, насамперед, коли rsync використовується в системі Windows .
Ще одна мотивація цього питання полягає в тому, щоб я не потрапляв у свою попередню проблему, коли мені не вдалося отримати доступ до жодного файлу на моєму зовнішньому диску, який було підкріплено rsync через cygwin. Це був кошмар, тому що я фактично втратив дані на своєму основному ПК і намагався відновити їх із резервної копії.
Нижче наведено подібні проблеми, з якими я стикався під час використання rysnc:
- Неможливо отримати доступ до будь-яких файлів на зовнішньому диску, створеному резервним копієм за допомогою резервної копії на основі rsync Rsync та Cygwin в Windows, дає помилки, відхилені в дозволі
- Неможливо зберегти мітку часу https://unix.stackexchange.com/questions/61586/how-to-tell-rsync-to-preserve-time-stamp-on-files-when-source-tree-has-a-mount
- rsync - помилка mkstemp https://stackoverflow.com/questions/11039559/rsync-mkstemp-failed-permission-denied-13
Моє розуміння використання rsync є проміжним, і я посилався на наведені нижче посібники. Однак моє найбільше плутанина щодо використання rsync пов'язана з дозволами, маскуванням файлів / папок, Posix тощо.
Вимоги / припущення
- Я хочу використовувати rsync в контексті "резервного копіювання", а НЕ в контексті "синхронізації". Часто інші користувачі, які задають питання, пов'язані з rsync, можуть бути зацікавлені у "синхронізації" даних, щоб переконатися, що у них синхронізована робоча копія файлів на іншому ПК. Однак мій намір не в тому, щоб "синхронізувати", а просто "створити резервну копію", щоб, якщо щось трапилося з моїм ПК, я можу отримати останню резервну копію та відновити її.
- Оригінальні файли, які потрібно створити резервну копію, могли існувати в будь-якій операційній системі (наприклад, Windows, Ubuntu, MacOS), але в першу чергу в Windows.
- У Windows rsync використовується за допомогою підсистеми Windows для Linux (WSL), а НЕ через cygwin
- Призначенням для резервного копіювання може бути зовнішній накопичувач у форматі NTFS, FAT32 або exFAT, або це може бути мережевий диск (наприклад: Samba share).
- Це не потрібно, але призначення може бути підключено до використання SSH
Мій поточний метод та проблеми
Я використовую rsync через підсистему Windows для Linux (WSL) у Windows 10. Нижче наведено приклади прикладних проблем, з якими я зіткнувся:
Приклад 1: Не працює
rsync -avhP --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup
Цей метод призводить до того, що файли НЕ передаються та помилки, як показано нижче:
rsync: chgrp "/mnt/my_usb_mount/ProjectA/src" failed: Operation not permitted (1)
і
rsync: mkstemp "/mnt/my_usb_mount/ProjectA/src/.mydata.json.6cfTCf" failed: Operation not permitted (1)
Приклад 2: Частково працює
rsync -avhP --no-p --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup
або
rsync -avhP --no-p --chmod=ugo=rwX --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup
Цей спосіб використання rysnc призводить до передачі файлів, але часова марка (створена, змінена, доступна) встановлюється на час передачі. Якщо я запускаю команду rsync ще раз, всі файли будуть виявлені як змінені та повторно передані через неправильну часову позначку. Крім того, я отримую помилки, як показано нижче:
rsync: chgrp "/mnt/my_usb_mount/ProjectA/src" failed: Operation not permitted (1)
Приклад 3: Правильно працює.
sudo rsync -avhP --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup
Цей метод працює чудово, однак, я не розумію, навіщо мені користуватися sudo
? Це тому, що я використовую rsync у Windows через WSL? Чи потрібно було sudo
б мені користуватися, якщо я створював резервну копію файлів з ПК з Linux (наприклад: Ubuntu)?
Хоча приклад 3 є робочим рішенням, у мене ще багато питань:
- Як дізнатися, коли
sudo
це потрібно? - Коли я використовую
--no-p
або--chmod=ugo=rwX
- Що робити, якщо у мене немає дозволів на використання
sudo
? - Це спрацює, якщо я створював резервну копію файлів на мережевому диску?
- Що робити, якщо я використовую SSH?
- Під час використання rsync з Windows через WSL, чи коли-небудь у мене виникнуть дивні проблеми з дозволом чи масками файлів / папок, як я раніше ?