J'ai un compte seedbox que j'utilise pour le torrent. J'ai configuré une tâche cron qui utilise rsync
pour télécharger tous les fichiers de la seedbox sur mon serveur ubuntu 14.04.1. Le dossier de téléchargement est un partage samba, car j'ai déjà utilisé Windows pour organiser le contenu dans des dossiers avant de le déplacer vers un emplacement plus permanent sur mon serveur. Avant de passer à 14.04, j'utilisais 12.04 et tout fonctionnait correctement.
Le problème est que les fichiers que je reçois de la seedbox appartiennent à un utilisateur appelé "544" (c'est le nom d'utilisateur généré par la seedbox, pas une chose octale) et ne peuvent pas être supprimés par mon utilisateur sur mon serveur. Après avoir modifié les autorisations sur le dossier de téléchargement, je peux les supprimer. De plus, j'ai donné à tous les utilisateurs des autorisations de lecture/écriture dans le dossier samba lors du partage.
Ma question est donc la suivante :est-il possible, grâce à une commande élégante exécutée, de créer rsync
changer l'utilisateur/les autorisations sur les fichiers lors du téléchargement ? Ou est-il possible de faire en sorte que le dossier fonctionne de manière à ce que tous les nouveaux fichiers changent automatiquement d'utilisateur lorsqu'ils sont copiés/déplacés ? Je suppose que je pourrais mettre le chmod
commande dans sudo cron à exécuter de temps en temps pour changer le propriétaire des fichiers, mais comme parfois la quantité de données à télécharger peut être assez importante, il est difficile de savoir quand la déclencher par rapport au rsync-job pour vous assurer que tous les fichiers sont téléchargés.
Réponse acceptée :
rsync
uniquement conserve le propriétaire si vous le demandez avec -o
— sinon les fichiers appartiendront à l'utilisateur qui exécute le rsync
commande, comme lors de la création de tout autre fichier. -a
inclut -o
, cependant, beaucoup de rsync
communs les lignes de commande l'incluent. man rsync
inclut explicitement un passage à ce sujet :
For example: if you want to use -a (--archive) but don’t want -o
(--owner), instead of converting -a into -rlptgD, you could
specify -a --no-o (or -a --no-owner).
Ainsi, au lieu de rsync -a source dest
vous pouvez utiliser rsync -a --no-o source dest
pour que les fichiers appartiennent à l'utilisateur qui exécute la commande.
D'un autre côté, vous ne pouvez généralement changer le propriétaire d'un fichier que si vous êtes root, donc cela ne se produit pas beaucoup. S'il est nécessaire d'exécuter ce travail en tant que root pour une raison quelconque et que vous souhaitez que les fichiers appartiennent à votre utilisateur normal plutôt qu'à root, vous pouvez utiliser le --chown
choix :
rsync -a --chown=youruser:yourgroup ...
Il y a aussi un --usermap
option pour les mappages plus compliqués, si vous souhaitez conserver certains utilisateurs. Il faut une liste séparée par des virgules de from:to
paires.
Comme dernière option, puisque vous utilisez apparemment rsync
à partir d'une tâche cron, vous pouvez simplement ajouter l'opération de modification du propriétaire/des autorisations à la tâche cron avec && chown ...
.