Как использовать rsync для резервного копирования личных файлов на внешний жесткий диск или сетевой диск, не испытывая проблем с разрешениями?

Как использовать rsync для резервного копирования личных файлов на внешний жесткий диск или сетевой диск, не испытывая проблем с разрешениями?

Фон

Какой "правильный" метод использования 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).
  • Это не обязательно, но к месту назначения можно подключиться с помощью 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, столкнусь ли я когда-нибудь со странными проблемами с правами доступа или маской файла/папки, поскольку яранее иметь?

решение1

Ntfs и fat не заботятся о разрешениях Linux, вы должны сделать резервную копию на разделе ext4

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

Связанный контент