Před chvílí jsme diskutovali o tom, jak vyloučit soubory určité velikosti z kopírování pomocí rsync v systémech podobných Unixu. Tato metoda nám pomohla vyloučit velké soubory nebo méně důležité soubory, abychom proces kopírování dokončili co nejdříve. Zbývající soubory tedy můžeme zkopírovat později, až budeme mít volný čas. Dnes se v tomto stručném návodu podíváme, jak vyloučit konkrétní adresáře z kopírování pomocí Rsync a cp příkazy v Linuxu.
Vyloučení konkrétních adresářů z kopírování v Linuxu
Tento úkol může být proveden mnoha způsoby. Jsem si vědom následujících dvou metod.
Metoda 1 – pomocí rsync příkaz
Jak již možná víte, Rsync je rychlý a všestranný nástroj ke kopírování souborů a složek lokálně nebo na/z jiného hostitele přes jakýkoli vzdálený shell nebo do/ze vzdáleného démona rsync. Rsync má spoustu užitečných možností. Jednou z užitečných možností je --exclude . Pomocí vyloučit možnost, můžeme vyloučit určité soubory/adresáře z kopírování. Podívejme se na příkladu, jak to udělat.
Řekněme, že máte složku s názvem ostechnix . Uvnitř adresáře ostechnix jsou tři podadresáře, jmenovitě dir1 , adresář2 a dir3 .
$ ls ostechnix/ dir1 dir2 dir3
Chcete zkopírovat dir1 a dir3 do jiného umístění, ale ne do dir2 . Jak? Zde přichází na řadu rsync.
Chcete-li vyloučit konkrétní adresář z kopírování pomocí příkazu rsync, stačí spustit:
$ rsync -av --progress ostechnix/ backup/ --exclude dir2
Ukázkový výstup by byl:
sending incremental file list ./ dir1/ dir1/file1.pdf 6,152,611 100% 58.36MB/s 0:00:00 (xfr#1, to-chk=7/11) dir1/file2 2,597,261 100% 14.83MB/s 0:00:00 (xfr#2, to-chk=6/11) dir1/file3.doc 88,143 100% 470.37kB/s 0:00:00 (xfr#3, to-chk=5/11) dir1/file4.txt 66,374 100% 330.71kB/s 0:00:00 (xfr#4, to-chk=4/11) dir3/ dir3/file1.pdf 6,152,611 100% 18.39MB/s 0:00:00 (xfr#5, to-chk=3/11) dir3/file2 2,597,261 100% 6.68MB/s 0:00:00 (xfr#6, to-chk=2/11) dir3/file3.doc 88,143 100% 224.16kB/s 0:00:00 (xfr#7, to-chk=1/11) dir3/file4.txt 66,374 100% 164.10kB/s 0:00:00 (xfr#8, to-chk=0/11) sent 17,813,759 bytes received 187 bytes 11,875,964.00 bytes/sec total size is 17,808,778 speedup is 1.00
Výše uvedený příkaz zkopíruje veškerý obsah složky ostechnix do složky, konkrétně záloha a vyloučí adresář dir2 z kopírování.
Případně můžete použít stejný příkaz jako níže.
$ rsync -av --progress --exclude="folder_to_exclude" source_dirctory dest_directory
Příklad:
$ rsync -av --progress --exclude="dir2" ostechnix/ backup/
Ve skutečnosti je dobré vynechat nebo vyloučit některé velké nebo méně důležité adresáře z kopírování při zálohování systému pomocí rsync, abyste ušetřili čas.
Další podrobnosti naleznete na manuálových stránkách.
$ man rsync
Přečtěte si také:
- Jak rychle přenášet velké soubory přes síť v Linuxu a Unixu
- Jak zjistit velikost adresáře v systému Linux z příkazového řádku
Metoda 2 – pomocí cp příkaz
Můžeme také použít cp příkaz ke zkopírování složek z jednoho umístění do druhého s výjimkou konkrétních adresářů.
Přejděte do svého zdrojového adresáře, tj. v našem případě ostechnix.
$ cd ostechnix/
A spusťte následující příkaz:
$ cp -r `ls -A | grep -v "dir2"` /home/sk/backup/
Výše uvedený příkaz zkopíruje veškerý obsah aktuální složky ostechnix kromě podadresáře dir2 a uloží je do /home/sk/backup/ adresář.
Ještě jednodušší, můžeme to udělat následovně.
$ cp -r !(dir2) /home/sk/backup/
Další podrobnosti naleznete na manuálových stránkách.
$ man cp