GNU/Linux >> Znalost Linux >  >> Linux

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

Nejjednodušší způsob je spustit zsh místo bash.

rsync -a -- /path/to/directory/*(om[1,42]) remote-server:

V závorce om seřadí soubory podle času zpětné úpravy (tj. podle rostoucího věku) a [1,42] vybere prvních 42 shod.

Pokud chcete pouze běžné soubory a ne adresáře, přidejte . za úvodní závorkou. Další možnosti naleznete v části „glob qualifiers“ v zshexpn manuálová stránka.

Pokud chcete porovnat soubory ve stromu adresářů s kořenem /path/to/directory , spíše než uvnitř tohoto adresáře použijte /path/to/directory/**/*(.om[1,42]) . To však odešle všechny soubory do stejného adresáře v cíli.


Za předpokladu, že chcete odesílat soubory z aktuálního pracovního adresáře:

rsync `ls -tp | grep -v / | head -n <n>` <destination> <options>

udělá ten trik. Například:

rsync `ls -tp | grep -v / | head -n 10` [email protected]:/dest/dir/ --progress --compress

Pokud v aktuálním pracovním adresáři nejsou žádné soubory, nebo pokud některý z horních souborů obsahuje mezery nebo jiné speciální znaky, zobrazí se chyba.

Znaky ` kolem ls -tp | grep -v / | head -n <n> řekni bash, aby spustil příkazy a nahradil je výsledným seznamem souborů jako seznamem odděleným mezerou. -t volba říká ls pro řazení podle časového razítka -p říká, že má přidat / za názvy adresářů a část grep vyloučí řádky končící / abyste nakonec neposílali adresáře. Přidejte -c na ls možnosti, pokud chcete, aby byly nejnovější soubory posuzovány podle času vytvoření místo času modifikace (i když mějte na paměti, že některé programy soubory odstraní a nahradí je místo aktualizace, takže ctime a mtime mohou být stejné, i když se zdá, že soubor existuje déle ).

Nebudu tvrdit, že je to bezpochyby nejjednodušší způsobem, ale byl by to způsob, který by mě napadl jako první.

(podotázka mwm v komentáři)

a co naopak? server na místní?

To by bylo trochu složitější, protože si nemyslím, že na příkazovém řádku rsync můžete mít více vzdálených zdrojů souborů, jako můžete ty místní. Můžete spustit rsync na serveru přes ssh , čímž se otevře tunel zpět do vašeho místního sshd (se stejným ssh vyvolání, přes které spustíte rsync), abyste získali připojení, v podstatě použili stejný příkaz z druhé strany.


Linux
  1. Jak selektivně umlčet Rsync?

  2. Kopírovat prvních N souborů do jiného adresáře?

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

  1. Použití rsync k synchronizaci souborů

  2. cp -r bez skrytých souborů

  3. Linux ekvivalentní k robocopy?

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

  2. Cat soubory s adresářem?

  3. Přejmenovat soubory v adresáři?