Je reçois l'erreur mentionnée dans le titre.
J'ai trouvé cette question similaire: Exécutez rsync avec l'autorisation root sur la machine distante . Cela ne répond pas à ma question.
Je suis l'administrateur du serveur distant et je souhaite utiliser rsync
pour sauvegarder des fichiers dans ma boîte locale. Voici ma commande rsync:
$ rsync -avz [email protected]:/var/www/ /backups/Sites/MySite/
Cela fonctionne surtout. La connexion se fait via une paire de clés. Je n'utilise pas et ne peux pas utiliser de mot de passe (EDIT: pour me connecter via SSH). Seuls quelques fichiers ne seront pas transférés en raison des autorisations. Je ne veux pas modifier ces autorisations.
Voici l'erreur:
receiving file list ... done
rsync: send_files failed to open "/var/www/webapp/securestuff/install.php": Permission denied (13)
Je ne pas souhaite modifier les autorisations sur ce fichier. Il (et d'autres comme ça) ne devrait pas être lisible (sauf par root).
Cela doit s'exécuter dans un travail cron et je préfère une solution simple sur une seule ligne utilisant uniquement la commande rsync. Le prochain choix serait un script shell que je peux appeler à partir de la tâche cron. En aucun cas, je ne peux me connecter manuellement à la machine distante et devenir root (car je dormirai lorsque cela fonctionnera.
Comment puis-je utiliser rsync pour le sauvegarder sur ma box locale?
la source
rsync: send_files failed to open "/cygdrive/...": Permission denied (13)
. Mon ordinateur source était donc Windows cygwin. Situation légèrement différente, mais pour la postérité, ma solution consistait à cliquer avec le bouton droit sur cmd.exe et à exécuter en tant qu'administrateur .Réponses:
Vous ne pouvez pas sauvegarder un fichier que vous ne pouvez pas lire autrement, donc les autorisations devront être modifiées ou remplacées par root .
Vos options plus en détail:
Remplacez les autorisations en rsync'ing comme
[email protected]
directement. (... ou en configurant sudo sur le serveur pour permettre l'exécution sans mot de passe du
rsync
composant côté serveur.et
Créez un compte dédié de «sauvegarde de site Web» sur le serveur. Modifiez les autorisations des fichiers pour les rendre lisibles sur le compte "sauvegarde de site Web"; vous pouvez utiliser des listes de contrôle d'accès et
setfacl
pour cela. N'utilisez pas ce compte pour autre chose.Écrivez un script sur le serveur qui viderait / var / www / dans une archive tar chiffrée. Encore une fois, cela peut être fait en tant que root (via crontab) ou en configurant sudo pour ne pas exiger de mot de passe pour ce script. Par exemple:
La sauvegarde serait effectuée en tirant l'intégralité de l'archive tar à chaque fois, ce qui pourrait être inefficace avec les grands sites:
L'exigence de mot de passe serait supprimée en modifiant sudoers :
la source
Dans l'hôte distant, vous pouvez exécuter le démon rsync avec
dans le
/etc/rsyncd.conf
fichier.Cela permettra au démon d'utiliser la
CAP_DAC_OVERRIDE
capacité et de lire le système de fichiers local sans changer les autorisations / la propriété.Si vous avez juste besoin de faire une sauvegarde, il est recommandé de définir rsync en mode lecture seule:
la source
Si les fichiers ne sont lisibles que par
root
vous devez avoirroot
accès pour sauvegarder le fichier en le lisant à partir du système de fichiers.rsync
lit les fichiers du système de fichiers et non du périphérique brut.À l'exception des
dump
,dd
et des sauvegardes similaires qui copient la partition plutôt que des fichiers, des programmes de sauvegardes lire les fichiers du système de fichiers. Les utilitaires de sauvegarde ne parviendront pas à lire et à sauvegarder les fichiers pour lesquels les autorisations de l'ID utilisateur utilisé pour les exécuter empêchent l'accès. C'est le cas que vous rencontrez.Dans la plupart des cas, vous devez faire suffisamment confiance à votre logiciel de sauvegarde pour lui permettre de lire toutes vos données. Cela signifie également que vous devez faire confiance à votre support de sauvegarde avec toutes vos données. Dans certains cas, vous souhaiterez peut-être exclure certains fichiers de la sauvegarde et utiliser une autre méthode pour sauvegarder leur contenu.
EDIT: Pendant que vous archivez les données (en copiant toutes les autorisations), vous aurez besoin d'un accès root sur les deux serveurs. Si vous faites cela en tant que sauvegarde, vous voudrez peut-être envisager une solution comme BackupPC qui utilise rsync pour lire les fichiers, mais stocke les fichiers dans sa propre arborescence de répertoires.
la source