GNU/Linux >> Znalost Linux >  >> Linux

RSYNC neodstraní zdrojové adresáře

Manuál dokonce říká:

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

Pokud chcete odstranit prázdné adresáře ve vašem zdroji, pokud tam ještě zbývají soubory, proveďte:

find . -depth -type d -empty -delete

Pokud je to jen prázdný zdrojový adresář, rmdir <directory> bude samozřejmě stačit.


Chování --remove-source-files co pozorujete, je přesně to, co specifikuje man rsync :

--remove-source-files

   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.

Neexistuje žádný konkrétní příkaz k odstranění adresářů, jak jasně ukazují tyto dvě diskuse v StackExchange a ServerFault. Navrhované řešení je vydat dva samostatné příkazy:

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

Poslední část příkazu navržená v těchto dvou příspěvcích,

 rmdir source/

který je potřeba k odstranění (nyní vyprázdněného) zdrojového adresáře má v těchto příspěvcích tento formulář, protože OP a odpovědi používají rsync k přesunu velkého množství souborů na stejném počítači. Ve vašem případě to budete muset udělat ručně.


Pomocí "rm -rf " má inherentní race condition, konkrétně můžete smazat soubory, které byly právě vytvořeny mezi rsync a rm vyvolání.

Dávám přednost použití:

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

sshserver najde příchozí -type d -delete

Toto NEODSTRANÍ adresáře, pokud nejsou prázdné.


Linux
  1. Proč nefunguje automatické dokončování při zadávání názvu příkazu za „zdroj“?

  2. Proč „ukončit &“ nefunguje?

  3. Linux – Proč Rsync na Linuxu nezachovává všechna časová razítka (čas vytvoření)?

  1. archivace (ubuntu tar) skrytých adresářů

  2. Autorepeat nefunguje

  3. rsync neodstraní soubory v cíli

  1. [Vyřešeno]:Proč rsync nezkopíroval skryté soubory/adresáře a proč hvězdička nezahrnuje skryté (tečkové) soubory v Linuxu?

  2. Může scp kopírovat adresáře rekurzivně?

  3. upstart nevidí moji práci