Фон
Что такое "правильный" метод для использования 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-mounts
- 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).
- Это не обязательно, но пункт назначения может быть подключен с использованием SSH
Мой текущий метод и проблемы
Я использую rsync через Windows Subsystem для 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, у меня возникнут странные проблемы с разрешениями или маской файлов / папок, как раньше?