GNU/Linux >> Znalost Linux >  >> Linux

Rekurzivní, nepřepisující kopie souboru?

Můžete použít rsync (provádí také místní kopírování)

rsync -r --ignore-existing --include=*/ --include=*.js --exclude=* source/ destination
  • -r pro návrat do adresářů,
  • --ignore-existing ignorovat existující soubory v cíli,
  • include a exclude filtry znamenají:zahrnout všechny adresáře, zahrnout všechny soubory *.js, vyloučit zbytek; je potřeba první zahrnout, jinak poslední vyloučení vyloučí také adresáře před kontrolou jejich obsahu.

Nakonec můžete přidat -P pokud chcete sledovat průběh, --list-only pokud chcete vidět, co by to zkopírovalo bez skutečného kopírování, a -t chcete-li zachovat časová razítka.

To nesouvisí, ale příkaz rsync jsem se naučil nedávno, když jsem přesunul 15 let dokumentů z jednoho oddílu na druhý. S jistotou, že tam jsou moje soubory, jsem pak vymazal starý oddíl a dal tam nějaké jiné věci; Později jsem si uvědomil, že jsem ztratil všechna časová razítka a objevil jsem příznak -t. Jen jsem se chtěl podělit o své trápení :'(


Toho lze také dosáhnout pomocí cp. Viz zde:

sudo cp -vnpr /xxx/* /yyy

xxx =zdroj

yyy =cíl

v =podrobný

n =no clobber (žádné přepsání)

p =zachovat oprávnění

r =rekurzivní


Při pohledu na manuálové stránky se zdá, že chcete -n možnost.

-n, --no-clobber
   do not overwrite an existing file (overrides the previous -i option)

Linux
  1. Zkopírujte n bajtů dat x do souboru

  2. Progress bar během smbclient put

  3. Zkopírujte a přepište soubor ve skriptu shellu

  1. Zkopírujte soubory v terminálu Linux

  2. Ansible Guide:Správa souborů pomocí Ansible

  3. Jak zkopíruji soubor s názvem začínající tečkou?

  1. Rekurzivní statistiky o typech souborů v adresáři?

  2. najít a zkopírovat soubor pomocí Bash

  3. Zahrnout další soubory do .bashrc