GNU/Linux >> Znalost Linux >  >> Linux

Kopírování souborů a vytváření cílových adresářů současně

Obvykle kopírujeme soubory z jednoho umístění do jiného existujícího umístění pomocí příkazů jako cp , rsync a scp atd. Pokud cílové umístění neexistuje, nejprve jej vytvoříme a poté zkopírujeme soubor do tohoto nově vytvořeného umístění. Až dosud jsem takto obvykle kopíroval soubory z jednoho umístění na druhé z příkazového řádku. Věděli jste, že můžeme zkopírovat soubor a vytvořit cílový adresář automaticky, pokud neexistuje? Ne? Žádný problém! V této příručce uvidíme, jak kopírovat soubory a vytvářet cílové adresáře současně pomocí jediného příkazu v Linuxu.

Upozorňujeme, že nemluvím o kombinaci dvou příkazů. Kdokoli by to mohl udělat například kombinací dvou příkazů, jak je uvedeno níže:

$ mkdir -p destination && cp source_file destination

Nejedná se však o jediný příkaz. Zde jsme použili dva příkazy, tj. mkdir a cp . Je to vlastně jednořádkový příkaz. Nyní mi dovolte ukázat, jak provést stejný úkol pouze pomocí jednoho příkazu.

Kopírujte soubory a vytvářejte cílové adresáře současně v Linuxu

Můžeme to udělat pomocí tří různých metod. Nejprve uvidíme, jak to udělat pomocí install příkaz.

Metoda 1 – pomocí install příkaz

install příkaz zkopíruje soubory do libovolného umístění podle vašeho výběru v Linuxu. To je speciálně používáno pro tento účel sestavovacími systémy jako automake . Je součástí GNU coreutils, takže jej nemusíte instalovat.

Chcete-li zkopírovat soubor a vytvořit cílový adresář ve stejném pomocí install příkaz, jednoduše spusťte:

$ install -D source-file destination-directory

Příklad:

Následující příkaz zkopíruje soubor s názvem sk.txt do cílového adresáře s názvem ostechnix . Upozorňujeme, že cílový adresář neexistuje. Zkopírujeme soubor a vytvoříme cílový adresář současně s install příkaz jako níže:

$ install -D sk.txt ostechnix/sk.txt

Ověřte, zda byl soubor zkopírován do ostechnix adresář vypsáním jeho obsahu pomocí ls příkaz:

$ ls ostechnix/
sk.txt

Vidět? Cílový adresář jsem předtím nevytvářel. Příkaz install vytvořil adresář automaticky a uložil do něj soubor.

Šikovné, že? Vskutku! Toto je jedna z užitečných funkcí install příkaz. To lze použít ve skriptech shellu.

Tato metoda má několik omezení. Na konci cílového umístění musíte uvést název zdrojového souboru. Pokud nezadáte název souboru, install příkaz jej nezkopíruje a zobrazí následující chybu:

$ install -D sk.txt ostechnix/
install: target 'ostechnix/' is not a directory: No such file or directory

Můžete kopírovat jeden soubor najednou. Neexistuje způsob, jak zkopírovat více souborů do více umístění pomocí install příkaz.

Můžeme také kopírovat soubory a měnit vlastnictví, oprávnění současně pomocí install příkaz, jak je popsáno v následující příručce.

  • Jak kopírovat soubory a měnit vlastnictví a oprávnění současně

Další podrobnosti o příkazu install naleznete na jeho manuálové stránce.

$ man install

Metoda 2 – pomocí cp příkaz

Obecně používáme cp příkaz pro kopírování souborů z jednoho místa na druhé. cp příkaz má volbu s názvem --parents což nám umožňuje zkopírovat celou adresářovou strukturu zdrojového souboru a uložit jej do cíle.

Řekněme například sk.txt soubor je uložen v ~/Downloads adresář a chtěli jste jej zkopírovat do ~/Documents adresář. Pokud zkopírujete soubor pomocí cp příkaz z ~/Downloads na ~/Documents , soubor bude uložen v adresářové struktuře takto -> ~/Documents/Downloads/sk.txt .

Udělejme to v reálném čase a uvidíme, co se stane.

$ cp --parents Downloads/sk.txt ~/Documents/

Nyní spusťte tree příkaz ke kontrole ~/Documents obsah adresáře:

$ tree Documents/
Documents/
└── Downloads
    └── sk.txt

1 directory, 1 file

Pamatujte, že jsme nevytvořili žádné adresáře uvnitř ~/Documents umístění. --parents možnost cp příkaz zachoval adresářovou strukturu zdrojového souboru.

Na rozdíl od install nemusíte uvádět název souboru na konci cílového adresáře.

To přímo nesouvisí s naším tématem. Nicméně cp příkaz vytvořil cílové adresáře automaticky, tj. zachoval adresářovou strukturu zdrojového souboru.

Metoda 3 – pomocí rsync příkaz

Rsync je ideálním řešením pro kopírování a zálohování dat mezi lokálními a vzdálenými adresáři. Chcete-li zkopírovat soubory a vytvořit cílové adresáře současně pomocí příkazu rsync, spusťte:

$ rsync sk.txt ostechnix/

Kde je adresář s názvem ostechnix nemusí existovat. Rsync jej automaticky vytvoří a uloží do něj zdrojový soubor.

Z těchto tří příkazů preferuji install příkaz. Protože mohu vytvořit vnořené adresáře (adresář v jiném adresáři) pomocí install příkaz. cp a rsync příkazy mohou vytvořit pouze jeden adresář, pokud vím. Opravte mě, pokud se mýlím.

Související čtení:

  • Jak zachovat vlastnictví a oprávnění k souborům při kopírování souborů nebo adresářů

Linux
  1. Jak zkopírovat soubor a vytvořit cílové adresáře současně?

  2. Příkaz k vytvoření sekvenčně číslovaných cílených adresářů a dávkového přesunu souborů?

  3. Kopírovat a chmod/chown zároveň

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Jak kopírovat soubory a měnit vlastnictví, oprávnění současně

  3. Najděte největší soubory a adresáře v Linuxu

  1. Jak vytvořit alias a používat příkaz Alias ​​v Linuxu

  2. Kopírování souborů a adresářů v Linuxu

  3. Ping a tcpdump současně