Je voudrais effectuer des sauvegardes incrémentielles (pour l'ensemble du système de fichiers) à partir d'une machine. rsync
Cela fera-t-il tout à fait, mais je voudrais également préserver la propriété du fichier - ce qui signifie, permettez-le de la restaurer.
Est-ce que cela est possible de faire sans exécuter rsync
comme racine sur la machine cible (stocker les sauvegardes)?
Quelques idées...
chown
pour un utilisateur non root? (Je suppose que cela aurait probablement besoin d'être noexec
pour interdire l'élévation.)tar
peut stocker la propriété de fichier, bien que le fait de le faire fonctionner avec RSYNC ou des sauvegardes incrémentielles serait un peu plus impliqué. Il serait également agréable de pouvoir parcourir les sauvegardes comme un système de fichiers régulier.Comme indiqué dans les autres réponses, pour préserver directement les informations de propriété, vous avez besoin d'un accès root à la machine de destination.
Cependant, vous avez eu au moins deux solutions de contournement pour éviter l'accès des racines tout en préservant la propriété:
--fake-super
option rsync. De la page de l'homme:Lorsque cette option est activée, RSYNC simule des activités super-utilisateur en enregistrant/restauration des attributs privilégiés via des attributs étendus spéciaux connectés à chaque fichier (au besoin).
Cela signifie que la propriété est non directement préservée dans un style classique Unix, plutôt que les informations de propriété sont stockées dans un attribut étendu spécial (c'est-à-dire: une sorte de "balise" attachée au fichier). Lors de la restauration, rsync
peut utiliser cette ea/étiquette pour reconstruire correctement le propriétaire du fichier d'origine.
getfacl
. Par exemple, émettre getfacl -R MNTPOINT > acls.txt
Vous économisez efficacement des informations sur la propriété (et ACL) dans un fichier texte pouvant être utilisé ultérieurement pour restaurer ces informations à l'aide de l'setfacl --restore
commande.Si j'étais vous, je mettais les sauvegardes sur un volume dans un conteneur Docker. De cette façon, vous pouvez mettre de bonnes limites à ce sujet et éviter les risques de sécurité, mais le gérer toujours comme une racine, de sorte que cela doit faire ce qu'il faut faire.
Plutôt que de copier tous vos fichiers un seul no par exemple comme RSYNC, vous devriez envisager de placer les fichiers dans une sorte de "conteneur" qui vous permet d'emballer tous les fichiers, de les transporter et de ne jamais perdre de métadonnées.
Avez-vous considéré "tar"? Je sais que TRAIL est l'antithèse de RSYNC: ce n'est pas incrémental, cela ne transporte pas les données nulle part, etc.
Cependant, il est vraiment bon de préserver la propriété, les autorisations, les ACL, les temps de modification, etc. Vous pouvez créer un fichier de goudron, copier-le sur une machine qui ne comprend même pas la manière UNIX de faire des autorisations de fichier (IE Windows, Tops-20, VAX/VMS), puis la copie sur un hôte UNIX, Et vous obtenez toutes les autorisations, etc. que cela avait à l'origine.
Il y a un système de fichiers fusible qui sera montez (en lecture-seule) fichiers tar .
Bien sûr, vous perdez les copies incrémentielles et d'autres caractéristiques qui font de RSYNC si un excellent outil. Toutefois, le World Unix utilisait Tar depuis plus de 20 ans avant que RSYNC n'ait été inventé et cela fonctionne très bien pour certaines situations.