Як я можу використовувати rsync для резервного копіювання особистих файлів на зовнішній жорсткий диск або мережевий диск, не маючи проблем, пов’язаних з дозволом?


1

Фон

Який "правильний" метод використання rsync для резервного копіювання даних? Причина, чому я прошу "правильний" метод, полягає в тому, що мій минулий досвід використання rsync призвів до дозволів, маски файлів / папок та часових позначок. Отже, це питання прагне зрозуміти, як я можу використовувати rsync для резервного копіювання даних, не наштовхуючись на будь-який дозвіл, маску файлів / папок чи часові позначки, насамперед, коли rsync використовується в системі Windows .

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

Нижче наведено подібні проблеми, з якими я стикався під час використання rysnc:

Моє розуміння використання 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, чи коли-небудь у мене виникнуть дивні проблеми з дозволом чи масками файлів / папок, як я раніше ?

Вам потрібно використовувати "sudo", оскільки ви не root, і резервне копіювання файлів, створених іншими користувачами, а не самими собою, включаючи правильні метадані, вимагає кореневого доступу. SSH безпосередньо вам не допоможе, хоча rsync може (і часто є) працювати над ssh. Зазвичай ви використовуєте sudo, якщо створюєте резервну копію файлів, якими ви не володієте в Linux.
davidgo

--Chmod = ugo = rwX, ймовірно, знадобиться, коли ваша файлова система не підтримує дозволи Posix, або якщо ви прочитали дозволи, але не відповідні дозволи для файлу. Якщо у вас немає дозволу на використання sudo, ви отримуєте його або знаєте, що втратите певну функціональність для файлів, якими ви не володієте. Якщо ви створюєте резервну копію на мережевому диску, то права доступу обмежені тим, що підтримує мережевий диск. Ви можете використовувати архіви tar, якщо хочете зберегти perms - але ви можете створити резервну копію / etc / passwd, а також вміщувати відображення користувачів.
Давидго

Відповіді:


0

Ntfs і жир не переймаються дозволом на Linux, ви повинні зробити резервну копію на розділі ext4

або зробіть резервну копію та стисніть її на tar.gz, а потім розпакуйте її на системному файлі Linux та відновіть її

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.