Otrzymuję błąd wymieniony w tytule.
Znalazłem podobne pytanie: Uruchom rsync z uprawnieniami administratora na zdalnym komputerze . To nie odpowiada na moje pytanie.
Jestem administratorem na zdalnym serwerze i chcę używać rsync
do tworzenia kopii zapasowych plików w lokalnym urządzeniu. Oto moje polecenie rsync:
$ rsync -avz [email protected]:/var/www/ /backups/Sites/MySite/
To głównie działa. Logowanie odbywa się za pomocą pary kluczy. Nie używam i nie mogę używać hasła (EDYCJA: aby zalogować się przez SSH). Kilka plików nie zostanie przeniesionych z powodu uprawnień. Nie chcę zmieniać tych uprawnień.
Oto błąd:
receiving file list ... done
rsync: send_files failed to open "/var/www/webapp/securestuff/install.php": Permission denied (13)
Ja nie chce zmienić uprawnienia na tym pliku. To (i inne podobne) nie powinno być czytelne (z wyjątkiem roota).
Musi to działać w zadaniu cron i wolę proste rozwiązanie jednowierszowe, używając tylko komendy rsync. Następnym wyborem byłby skrypt powłoki, który mogę wywołać z zadania crona. W żadnym wypadku nie mogę ręcznie zalogować się na zdalnej maszynie i zostać rootem (ponieważ będę spał, gdy to uruchomi się).
Jak mogę użyć rsync, aby utworzyć kopię zapasową w moim lokalnym polu?
źródło
rsync: send_files failed to open "/cygdrive/...": Permission denied (13)
. Więc moim komputerem źródłowym był Windows Cygwin. Nieco inna sytuacja, ale dla potomności moim rozwiązaniem było kliknięcie prawym przyciskiem myszy cmd.exe i uruchomienie jako administrator .Odpowiedzi:
Nie można wykonać kopii zapasowej pliku, którego inaczej nie można odczytać, więc uprawnienia będą musiały zostać zmienione lub zastąpione przez root .
Twoje opcje bardziej szczegółowo:
Zastąp uprawnienia, rsync'ing jak
[email protected]
bezpośrednio. (... lub konfigurując sudo na serwerze, aby umożliwić
rsync
działanie komponentu po stronie serwera bez hasła .i
Utwórz dedykowane konto „kopii zapasowej strony internetowej” na serwerze. Zmień uprawnienia do plików, aby były czytelne dla konta „tworzenie kopii zapasowych stron internetowych”; możesz używać list ACL i
setfacl
do tego. Nie używaj tego konta do niczego innego.Napisz skrypt na serwerze, który zrzuci / var / www / do zaszyfrowanego archiwum. Ponownie można to zrobić jako root (przez crontab) lub poprzez skonfigurowanie sudo tak, aby nie wymagało hasła dla tego skryptu. Na przykład:
Kopia zapasowa byłaby wykonywana przez ciągnięcie całego pliku archiwum za każdym razem, co może być nieefektywne w przypadku dużych witryn:
Wymaganie dotyczące hasła zostanie usunięte poprzez edycję sudoers :
źródło
Na zdalnym hoście możesz uruchomić demona rsync
w
/etc/rsyncd.conf
pliku.Umożliwi to demonowi korzystanie z
CAP_DAC_OVERRIDE
możliwości i odczytywanie lokalnego systemu plików bez zmiany uprawnień / własności.Jeśli potrzebujesz tylko wykonać kopię zapasową, dobrą praktyką jest ustawienie rsync na tryb tylko do odczytu:
źródło
Jeśli pliki są tylko do odczytu
root
, musisz miećroot
dostęp do kopii zapasowej pliku, czytając go z systemu plików.rsync
czyta pliki z systemu plików, a nie z surowego urządzenia.Z wyjątkiem
dump
,dd
i podobnych kopii zapasowych, które kopiują partycję raczej, że programy, kopie zapasowe plików odczyt plików z systemu plików. Narzędzia do tworzenia kopii zapasowych nie będą mogły odczytać i wykonać kopii zapasowych plików, do których uprawnienia identyfikatora użytkownika użyte do ich uruchomienia uniemożliwiają dostęp. Tak się dzieje.W większości przypadków należy zaufać oprogramowaniu do tworzenia kopii zapasowych na tyle, aby umożliwić odczyt wszystkich danych. Oznacza to również, że musisz zaufać swojemu nośnikowi kopii zapasowych wszystkimi danymi. W niektórych przypadkach możesz wykluczyć niektóre pliki z kopii zapasowej i użyć alternatywnej metody do wykonania kopii zapasowej ich zawartości.
EDYCJA: Podczas archiwizacji danych (kopiowanie wszystkich uprawnień) będziesz potrzebować dostępu do konta root na obu serwerach. Jeśli robisz to jako kopię zapasową, możesz spojrzeć na rozwiązanie takie jak BackupPC, które używa rsync do odczytu plików, ale przechowuje pliki we własnym drzewie katalogów.
źródło