GNU/Linux >> Znalost Linux >  >> Linux

rsync neodstraní soubory v cíli

Řešení 1:

Odstraňte * . Jak je uvedeno v manuálových stránkách rsync --delete volba nefunguje se zástupnými znaky.

Místo toho použijte toto:

rsync -a --delete $DIR1/ $DIR2/

"--deleteThis říká rsync, aby smazal nadbytečné soubory ze strany příjemce (ty, které nejsou na straně odesílatele), ale pouze pro adresáře, které se synchronizují. Museli jste požádat rsync o odeslání celého adresáře ( např. dir nebo dir/ ) bez použití zástupného znaku pro obsah adresáře (např. dir/* ), protože zástupný znak je rozbalen shellem a rsync tak dostane požadavek na přenos jednotlivých souborů, nikoli nadřazeného adresáře souborů. Soubory, které jsou vyloučeny z přenosu, jsou také vyloučeny z odstranění, pokud nepoužijete --delete-excluded nebo označte pravidla jako vyhovující pouze na straně odesílatele (viz modifikátory zahrnout/vyloučit v sekci FILTROVAT PRAVIDLA)."

Řešení 2:

Důvodem je to, že voláte rsync na /tmp/1/b, který nebude brát v úvahu soubor /tmp/1/a.

Zdá se, že vaším záměrem je rsyncovat adresář /tmp/1/ -- pokud jako zdroj použijete "/tmp/1/" místo jednotlivých souborů, všimne si, že "a" bylo smazáno z adresáře a odstraní to z cíle.

Řešení 3:

Pokud změníte druhý řádek rsync na rsync -a --delete $DIR1/ $DIR2 (bez *) to bude fungovat. Důvodem je, že shell rozšiřuje * na názvy souborů v prvním adresáři, což je ve vašem případě pouze b, takže chybějící soubor a rsync vůbec nezohlední, protože příkaz, který se provede, je ve skutečnosti rsync -a --delete $DIR1/b $DIR2 .


Linux
  1. Rekurzivně mazat soubory bezpečně:skartace

  2. Linux – efektivně odstranit velký adresář obsahující tisíce souborů?

  3. Možnost Rm selhat u neexistujících souborů?

  1. Odstraňte stažené aktualizace systému Windows

  2. Linux ekvivalentní k robocopy?

  3. rsync N nejnovějších souborů v adresáři

  1. Jak selektivně umlčet Rsync?

  2. Praktické příklady příkazu rsync v Linuxu

  3. linuxové sloučení složek:rsync?