GNU/Linux >> Znalost Linux >  >> Linux

Kopírování souborů v Linuxu

Kopírování dokumentů vyžadovalo vyhrazeného zaměstnance v kancelářích a poté vyhrazený počítač. Dnes je kopírování úkol, který uživatelé počítačů dělají bez přemýšlení. Kopírování dat do počítače je tak triviální, že se kopírují, aniž byste si to uvědomovali, například při přetahování souboru na externí disk.

Koncept, že digitální entity je triviální reprodukovat, je všudypřítomný, takže většina moderních počítačů nepřemýšlí o dostupných možnostech duplikace jejich práce. A přesto existuje několik různých způsobů, jak zkopírovat soubor v Linuxu. Každá metoda má různé funkce, které by vám mohly pomoci v závislosti na tom, co potřebujete udělat.

Zde je několik způsobů, jak kopírovat soubory v systémech Linux, BSD a Mac.

Kopírování v GUI

Linuxové kontejnery

  • Co jsou kontejnery systému Linux?
  • Úvod do terminologie kontejnerů
  • Stáhnout:Containers Primer
  • Operátoři Kubernetes:Automatizace platformy pro orchestraci kontejnerů
  • eKniha:Vzory Kubernetes pro navrhování cloudových nativních aplikací
  • Co je Kubernetes?

Stejně jako u většiny operačních systémů můžete veškerou správu souborů provádět v grafickém uživatelském rozhraní, pokud upřednostňujete tento způsob práce.

Drag and drop

Nejviditelnějším způsobem kopírování souboru je způsob, jakým jste pravděpodobně zvyklí kopírovat soubory na počítačích:přetažení. Na většině počítačů se systémem Linux se přetahování z jedné místní složky do jiné místní složky přesune soubor ve výchozím nastavení. Toto chování můžete změnit na operaci kopírování podržením klávesy Ctrl poté, co začnete soubor přetahovat.

Váš kurzor může zobrazovat indikátor, jako je znaménko plus, které ukazuje, že jste v režimu kopírování:

Všimněte si, že pokud soubor existuje ve vzdáleném systému, ať už se jedná o webový server nebo jiný počítač ve vaší vlastní síti, ke kterému přistupujete prostřednictvím protokolu pro sdílení souborů, výchozí akcí je často soubor zkopírovat, nikoli přesunout.

Klikněte pravým tlačítkem

Pokud se vám zdá přetahování souborů na ploše nepřesné nebo nemotorné nebo vám příliš oddaluje ruce od klávesnice, můžete obvykle soubor zkopírovat pomocí nabídky po kliknutí pravým tlačítkem. Tato možnost závisí na správci souborů, který používáte, ale obecně kliknutím pravým tlačítkem myši vytvoříte kontextovou nabídku obsahující běžné akce.

Akce kopírování kontextové nabídky uloží cestu k souboru (tam, kde soubor ve vašem systému existuje) do schránky, takže ji můžete vložit soubor někde jinde:

V tomto případě ve skutečnosti nekopírujete obsah souboru do schránky. Místo toho zkopírujete cestu k souboru. Při vkládání se váš správce souborů podívá na cestu ve vaší schránce a poté spustí příkaz kopírování, který zkopíruje soubor umístěný na této cestě do cesty, do které vkládáte.

Kopírování na příkazovém řádku

Zatímco GUI je obecně známý způsob kopírování souborů, kopírování v terminálu může být efektivnější.

cp

Zřejmým terminálovým ekvivalentem kopírování a vkládání souboru na plochu je cp příkaz. Tento příkaz zkopíruje soubory a adresáře a je relativně přímočarý. Používá známý zdroj a cíl (přesně v tomto pořadí) syntaxe, takže zkopírujete soubor s názvem example.txt do Dokumentů adresář:

$ cp example.txt ~/Documents

Stejně jako když přetáhnete soubor do složky, tato akce nenahrazuje Dokumenty pomocí example.txt . Místo toho cp zjistí, že Dokumenty je složka a umístí kopii souboru example.txt do toho.

Soubor můžete také pohodlně (a efektivně) při kopírování přejmenovat:

$ cp example.txt ~/Documents/example_copy.txt

Tato skutečnost je důležitá, protože vám umožňuje vytvořit kopii souboru ve stejném adresáři jako originál:

$ cp example.txt example.txt
cp:'example.txt' a 'example.txt' jsou stejný soubor.
$ cp example.txt example_copy.txt

Chcete-li zkopírovat adresář, musíte použít -r možnost, což znamená --rekurzivní . Tato možnost spustí cp v adresáři inode a poté na všechny soubory v adresáři. Bez -r možnost, cp dokonce ani nerozpozná adresář jako objekt, který lze zkopírovat:

$ cp notes/ notes-backup
cp:-r nespecifikováno; vynechání adresáře 'notes/'
$ cp -r notes/ notes-backup

kočka

Kočka command je jedním z nejvíce nepochopených příkazů, ale pouze proto, že je příkladem extrémní flexibility systému POSIX. Mezi vším ostatním kočka dělá (včetně zamýšleného účelu concat pokládání souborů), může také kopírovat. Například s kočkou můžete vytvořit dvě kopie z jednoho souboru pomocí jediného příkazu. Pomocí cp to nelze .

Význam použití kočky zkopírovat soubor je způsob, jakým systém akci interpretuje. Když používáte cp pro kopírování souboru se atributy souboru zkopírují spolu se souborem samotným. To znamená, že oprávnění k souboru duplikátu jsou stejná jako u originálu:

$ ls -l -G -g
-rw-r--r--. 1 57368 25. července 23:57  foo.jpg
$ cp foo.jpg bar.jpg
-rw-r--r--. 1 57368 29. července 13:37  bar.jpg
-rw-r--r--. 1 57368 25. července 23:57  foo.jpg

Pomocí cat pro načtení obsahu souboru do jiného souboru však vyvolá systémové volání k vytvoření nového souboru. Tyto nové soubory podléhají vašemu výchozímu umask nastavení. Chcete-li se dozvědět více o umask , přečtěte si článek Alexe Juareze týkající se umask a oprávnění obecně.

Spusťte umask pro získání aktuálního nastavení:

$ umask
0002

Toto nastavení znamená, že novým souborům vytvořeným v tomto umístění je uděleno 664 (rw-rw-r-- ) povolení, protože nic není maskováno prvními číslicemi umask nastavení (a spustitelný bit není výchozí bit pro vytváření souboru) a oprávnění k zápisu je blokováno poslední číslicí.

Při kopírování s kočkou , ve skutečnosti soubor nezkopírujete. Používáte cat přečíst obsah souboru a poté přesměrovat výstup do nového souboru:

$ cat foo.jpg> baz.jpg
$ ls -l -G -g
-rw-r--r--. 1 57368 29. července 13:37  bar.jpg
-rw-rw-r--. 1 57368 29. července 13:42  baz.jpg
-rw-r--r--. 1 57368 25. července 23:57  foo.jpg

Jak vidíte, kočka vytvořil zcela nový soubor s použitou výchozí umask systému.

Nakonec, když vše, co chcete udělat, je zkopírovat soubor, na technických aspektech často nezáleží. Někdy však chcete zkopírovat soubor a skončit s výchozí sadou oprávnění a s cat to vše můžete udělat jedním příkazem.

rsync

rsync command je všestranný nástroj pro kopírování souborů s pozoruhodnou schopností synchronizovat váš zdroj a cíl. Nejjednodušší je rsync lze použít podobně jako cp příkaz:

$ rsync example.txt example_copy.txt
$ ls
example.txt    example_copy.txt

Skutečná síla příkazu spočívá v jeho schopnosti ne kopírovat, když to není nutné. Pokud používáte rsync zkopírujte soubor do adresáře, ale tento soubor již v tomto adresáři existuje, poté rsync neobtěžuje provádění operace kopírování. Lokálně tato skutečnost nemusí nutně znamenat mnoho, ale pokud kopírujete gigabajty dat na vzdálený server, je tato funkce zcela zásadní.

Co však dělá rozdíl i lokálně, je schopnost příkazu rozlišovat soubory, které sdílejí stejný název, ale obsahují různá data. Pokud jste někdy narazili na dvě kopie toho, co má být stejný adresář, pak rsync můžete je synchronizovat do jednoho adresáře obsahujícího nejnovější změny z každého z nich. Toto nastavení je docela běžný jev v odvětvích, která ještě neobjevila kouzlo správy verzí, a pro zálohovací řešení, ve kterých existuje jeden zdroj pravdy, který lze šířit.

Tuto situaci můžete záměrně napodobit vytvořením dvou složek, jedné s názvem příklad a druhý example_dupe :

Příklad $ mkdir example_dupe

Vytvořte soubor v první složce:

$ echo "one"> example/foo.txt

Použijte rsync pro synchronizaci dvou adresářů. Nejběžnější možnosti pro tuto operaci jsou -a (pro archiv , což zajišťuje zachování symbolických odkazů a dalších speciálních souborů) a -v (pro podrobné , která vám poskytne zpětnou vazbu o průběhu příkazu):

$ rsync -av example/ example_dupe/

Adresáře nyní obsahují stejné informace:

$ cat example/foo.txt
jedna
$ cat example_dupe/foo.txt
jedna

Pokud se soubor, který považujete za zdroj, liší, pak se cíl aktualizuje, aby odpovídal:

$ echo "dva">> example/foo.txt
$ rsync -av example/  example_dupe/
$ cat example_dupe/foo.txt
jeden
dva

Mějte na paměti, že rsync příkaz je určen ke kopírování dat, nikoli k tomu, aby fungoval jako systém správy verzí. Pokud se například soubor v cíli nějak dostane před soubor ve zdroji, bude tento soubor stále přepsán, protože rsync porovnává soubory z hlediska divergence a předpokládá, že cíl má vždy zrcadlit zdroj:

$ echo "Tuto poznámku už nikdy neuvidíte"> example_dupe/foo.txt
$ rsync -av example/  example_dupe/
$ cat example_dupe/foo.txt
one
dva

Pokud nedojde k žádné změně, nedojde ke kopírování.

rsync příkaz má mnoho možností, které nejsou dostupné v cp , jako je možnost nastavit cílová oprávnění, vyloučit soubory, odstranit zastaralé soubory, které se nezobrazují v obou adresářích, a mnoho dalšího. Použijte rsync jako výkonná náhrada za cp nebo jen jako užitečný doplněk.

Mnoho způsobů kopírování

Existuje mnoho způsobů, jak dosáhnout v podstatě stejného výsledku na systému POSIX, takže se zdá, že pověst open source pro flexibilitu je dobře zasloužená. Zmeškal jsem užitečný způsob kopírování dat? Podělte se o své kopírovací hacky v komentářích.


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

  2. Linux – Obnova dat po zkopírování souboru do blokovaného zařízení?

  3. Příklady příkazů Linux Objcopy pro kopírování a překlad objektových souborů

  1. Zkopírujte soubory v terminálu Linux

  2. Přesouvání souborů na Linuxu bez mv

  3. Kopírovat soubor Linux s ETA?

  1. Přesunout soubory v terminálu Linux

  2. Co jsou řídké soubory v Linuxu

  3. zkopírujte soubor z Windows do Linuxu