GNU/Linux >> Tutoriels Linux >  >> Linux

RSYNC ne supprime pas les répertoires source

La page de manuel indique même :

--remove-source-files   sender removes synchronized files (non-dirs)

Si vous souhaitez supprimer des répertoires vides dans votre source, s'il reste des fichiers, faites un :

find . -depth -type d -empty -delete

Si c'est juste un répertoire source vide, un rmdir <directory> suffira bien sûr.


Le comportement de --remove-source-files que vous observez est exactement celui spécifié par man rsync :

--remove-fichiers-source

   This tells rsync to remove from the sending side the files (meaning non-directories) that are a part of the transfer and have been successfully duplicated on the receiving side.

Il n'y a pas de commande spécifique pour supprimer les répertoires, comme le montrent clairement ces deux discussions dans StackExchange et ServerFault. La solution suggérée consiste à émettre deux commandes distinctes :

 rsync -av --ignore-existing --remove-source-files source/ destination/ && \
 rsync -av --delete `mktemp -d`/ source/ 

La dernière partie de la commande suggérée dans ces deux articles,

 rmdir source/

qui est nécessaire pour supprimer le répertoire source (maintenant vidé) a cette forme dans ces messages car les OP et les réponses utilisent rsync pour déplacer de grandes quantités de fichiers au sein de la même machine. Dans votre cas, vous devrez le faire manuellement.


Utilisation de "rm -rf " a une condition de concurrence inhérente, vous pouvez notamment supprimer les fichiers qui viennent d'être créés entre le rsync et le rm invocations.

Je préfère utiliser :

rsync --remove-source-files -a serveur:incoming/incoming/ &&

sshserver trouve entrant -type d -delete

Cela ne supprimera PAS les répertoires s'ils ne sont pas vides.


Linux
  1. [Résolu] :Pourquoi rsync n'a pas copié les fichiers/répertoires cachés et pourquoi l'astérisque n'inclut pas les fichiers cachés (point) sous Linux ?

  2. Comparer les répertoires mais pas le contenu des fichiers ?

  3. Pourquoi la saisie semi-automatique ne fonctionne-t-elle pas lors de la saisie d'un nom de commande après `source` ?

  4. Vsftpd ne répertorie pas le contenu d'un répertoire ?

  5. Pourquoi `exit &` ne fonctionne pas ?

Comment exclure des fichiers et des répertoires avec Rsync

Comment supprimer (supprimer) le répertoire sous Linux

Comment rechercher et supprimer des répertoires vides sous Linux

Le réseau sans fil ne se reconnecte pas automatiquement dans KDE

Commande source introuvable

parvenu ne voit pas mon travail