GNU/Linux >> Znalost Linux >  >> Linux

Jak přesunout soubor v Linuxu

Přesouvání souborů v Linuxu se může zdát relativně jednoduché, ale k dispozici je více možností, než si většina uvědomuje. Tento článek učí začátečníky, jak přesouvat soubory v GUI a na příkazovém řádku, ale také vysvětluje, co se vlastně děje pod kapotou, a zabývá se možnostmi příkazového řádku, které mnoho zkušených uživatelů jen zřídka prozkoumalo.

Přesouváte co?

Než se pustíte do přesouvání souborů, stojí za to se blíže podívat na to, co se vlastně při přesunu děje objekty souborového systému. Když je soubor vytvořen, je přiřazen k inode , což je pevný bod v systému souborů, který se používá pro ukládání dat. Co se inode mapuje do souboru, můžete pomocí příkazu ls:

$ ls --inode example.txt
7344977 example.txt

Když přesouváte soubor, ve skutečnosti nepřesouváte data z jednoho inodu do druhého, pouze přiřadíte objektu souboru nový název nebo cestu k souboru. Soubor si ve skutečnosti zachovává svá oprávnění, když je přesouván, protože přesunutím se soubor nezmění ani jej znovu nevytvoří.

Souborové a adresářové inody nikdy neimplikují dědičnost a jsou diktovány samotným souborovým systémem. Přiřazení inodů je sekvenční na základě toho, kdy byl soubor vytvořen, a je zcela nezávislé na tom, jak uspořádáte počítač. Soubor "uvnitř" adresáře může mít nižší číslo inodu než jeho nadřazený adresář, nebo vyšší. Například:

$ mkdir foo
$ mv example.txt foo
$ ls --inode
7476865 foo
$ ls --inode foo
7344977 example.txt

Při přesunu souboru z jednoho pevného disku na druhý se však inode velmi pravděpodobně změní. K tomu dochází, protože nová data musí být zapsána do nového souborového systému. Z tohoto důvodu je v Linuxu přesun a přejmenování souborů doslova stejná akce. Ať už přesunete soubor do jiného adresáře nebo do stejného adresáře s novým názvem, obě akce provede stejný základní program.

Tento článek se zaměřuje na přesun souborů z jednoho adresáře do druhého.

Pohyb pomocí myši

GUI je přátelská a pro většinu lidí známá vrstva abstrakce nad komplexní sbírkou binárních dat. Je to také první a nejintuitivnější způsob, jak přesouvat soubory v Linuxu. Pokud jste zvyklí na prostředí stolního počítače v obecném smyslu, pravděpodobně již víte, jak přesouvat soubory na pevném disku. Například na ploše GNOME je výchozí akcí při přetahování souboru z jednoho okna do druhého přesunutí souboru spíše než jeho kopírování, takže je to pravděpodobně jedna z nejintuitivnějších akcí na ploše:

Správce souborů Dolphin na ploše KDE Plasma standardně vyzve uživatele k akci. Podržte Shift klávesa při přetahování souboru vynutí akci přesunutí:

Přesun na příkazovém řádku

Linuxový terminál

  • 7 nejlepších emulátorů terminálu pro Linux
  • 10 nástrojů příkazového řádku pro analýzu dat v systému Linux
  • Stáhnout nyní:SSH cheat sheet
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Výukové programy příkazového řádku systému Linux

Příkaz shellu určený pro přesun souborů v systémech Linux, BSD, Illumos, Solaris a MacOS je mv . Jednoduchý příkaz s předvídatelnou syntaxí, mv přesune zdrojový soubor do zadaného cíle, přičemž každý je definován buď absolutní nebo relativní cestou k souboru. Jak již bylo zmíněno, mv je tak běžný příkaz pro uživatele POSIX, že mnoho jeho dalších modifikátorů je obecně neznámých, takže tento článek vám přináší několik užitečných modifikátorů, ať už jste noví nebo zkušení.

Ne všechny mv příkazy však napsali stejní lidé, takže možná máte GNU mv , BSD mv , nebo Sun mv , v závislosti na vašem operačním systému. Možnosti příkazů se liší implementace od implementace (BSD mv nemá vůbec žádné dlouhé možnosti), takže se podívejte do svého mv manuálovou stránku, abyste viděli, co je podporováno, nebo si místo toho nainstalujte preferovanou verzi (to je luxus open source).

Přesun souboru

Přesunutí souboru z jedné složky do druhé pomocí mv , zapamatujte si syntaxi mv . Chcete-li například přesunout soubor example.txt do Dokumentů adresář:

$ touch example.txt
$ mv example.txt ~/Documents
$ ls ~/Documents
example.txt

Stejně jako když přesouváte soubor přetažením na ikonu složky, tento příkaz nenahrazuje Dokumenty pomocí example.txt . Místo toho mv zjistí, že Dokumenty je složka a umístí soubor example.txt soubor do něj.

Soubor můžete také pohodlně přejmenovat, když jej přesouváte:

$ touch example.txt
$ mv example.txt ~/Documents/foo.txt
$ ls ~/Documents
foo.txt

To je důležité, protože vám to umožňuje přejmenovat soubor, i když jej nechcete přesunout na jiné místo, například:

$ touch example.txt
$ mv example.txt foo2.txt
$ ls
foo2.txt
 

Přesun adresáře

mv příkaz nerozlišuje soubor od adresáře způsobem cp dělá. Můžete přesunout adresář nebo soubor se stejnou syntaxí:

$ touch file.txt
$ mkdir foo_directory
$ mv file.txt foo_directory
$ mv foo_directory ~/Documents

Bezpečný přesun souboru

Pokud zkopírujete soubor do adresáře, kde již soubor se stejným názvem existuje, mv příkaz ve výchozím nastavení nahradí cílový soubor tím, který přesouváte. Toto chování se nazývá clobbing a někdy je to přesně to, co zamýšlíte. Jindy tomu tak není.

Některé distribuce alias (nebo můžete napsat svůj vlastní) mv na mv --interactive , který vás vyzve k potvrzení. Někteří ne. V obou případech můžete použít --interactive nebo -i možnost zajistit, že mv požádá o potvrzení v případě, že jsou dva soubory se stejným názvem v konfliktu:

$ mv --interactive example.txt ~/Documents
mv:přepsat '~/Documents/example.txt'?

Pokud nechcete ručně zasahovat, použijte --no-clobber nebo -n namísto. Tento příznak tiše odmítne akci přesunu v případě konfliktu. V tomto příkladu soubor s názvem example.txt již existuje v ~/Documents , takže se nepřesune z aktuálního adresáře podle pokynů:

$ mv --no-clobber example.txt ~/Documents
$ ls
example.txt

Přesun se zálohami

Pokud používáte GNU mv , existují záložní možnosti nabízející další způsob bezpečného přesunu. Chcete-li vytvořit zálohu jakéhokoli konfliktního cílového souboru, použijte -b možnost:

$ mv -b example.txt ~/Documents
$ ls ~/Documents
example.txt    example.txt~

Tento příznak zajišťuje, že mv dokončí akci přesunu, ale také ochrání jakýkoli již existující soubor v cílovém umístění.

Další možností zálohování GNU je --backup , který přebírá argument definující, jak se záložní soubor jmenuje:

  • existující :Pokud v cíli již existují číslované zálohy, vytvoří se očíslovaná záloha. Jinak je to jednoduché je použito schéma.
  • žádné :Nevytvoří zálohu, i když --backup je nastaven. Tato možnost je užitečná k přepsání mv alias, který nastavuje možnost zálohování.
  • číslované :Připojí k cílovému souboru číslo.
  • jednoduché :Připojí k cílovému souboru ~ , které lze pohodlně skrýt před každodenním zobrazením pomocí --ignore-backups možnost pro ls .

Například:

$ mv --backup=numbered example.txt ~/Documents
$ ls ~/Documents
-rw-rw-r--. 1 seth uživatelů 128. srpna  1 17:23 example.txt
-rw-rw-r--. 1 seth uživatelů 128. srpna  1 17:20 example.txt.~1~

Výchozí schéma zálohování lze nastavit pomocí proměnné prostředí VERSION_CONTROL. Proměnné prostředí můžete nastavit v ~/.bashrc soubor nebo dynamicky před vaším příkazem:

$ VERSION_CONTROL=číslované mv --backup example.txt ~/Documents
$ ls ~/Documents
-rw-rw-r--. 1 seth uživatelů 128. srpna  1 17:23 example.txt
-rw-rw-r--. 1 seth uživatelů 128 srpna  1 17:20 example.txt.~1~
-rw-rw-r--. 1 seth uživatelů 128. srpna  1 17:22 example.txt.~2~

--záloha možnost stále respektuje --interactive nebo -i možnost, takže vás stále vyzve k přepsání cílového souboru, i když před tím vytvoří zálohu:

$ mv --backup=numbered example.txt ~/Documents
mv:přepsat '~/Documents/example.txt'? y
$ ls ~/Documents
-rw-rw-r--. 1 seth uživatelů 128 Aug  1 17:24 example.txt
-rw-rw-r--. 1 seth uživatelů 128 srpna  1 17:20 example.txt.~1~
-rw-rw-r--. 1 seth uživatelů 128 srpna  1 17:22 example.txt.~2~
-rw-rw-r--. 1 seth uživatelů 128. srpna  1 17:23 example.txt.~3~

-i můžete přepsat pomocí --force nebo -f možnost.

$ mv --backup=numbered --force example.txt ~/Documents
$ ls ~/Documents
-rw-rw-r--. 1 seth uživatelů 128 Aug  1 17:26 example.txt
-rw-rw-r--. 1 seth uživatelů 128 srpna  1 17:20 example.txt.~1~
-rw-rw-r--. 1 seth uživatelů 128 srpna  1 17:22 example.txt.~2~
-rw-rw-r--. 1 seth uživatelů 128 srpna  1 17:24 example.txt.~3~
-rw-rw-r--. 1 seth uživatelů 128. srpna  1 17:25 example.txt.~4~

--záloha možnost není v BSD k dispozici mv .

Přesun mnoha souborů najednou

Při přesouvání více souborů mv považuje konečný adresář pojmenovaný za cíl:

$ mv foo bar baz ~/Documents
$ ls ~/Documents
foo   bar   baz

Pokud poslední položkou není adresář, mv vrátí chybu:

$ mv foo bar baz
mv:cíl 'baz' není adresář

Syntaxe GNU mv je poměrně flexibilní. Pokud nemůžete poskytnout mv příkaz s cílem jako konečným argumentem, použijte --target-directory nebo -t možnost:

$ mv --target-directory=~/Documents foo bar baz
$ ls ~/Documents
foo   bar   baz

To je užitečné zejména při konstrukci mv příkazy z výstupu nějakého jiného příkazu, jako je najít příkaz xargs nebo GNU Parallel.

Stěhování na základě mtime

S GNU mv , můžete definovat akci přesunu na základě toho, zda je přesouvaný soubor novější než cílový soubor, který by nahradil. Tato možnost je možná pomocí --update nebo -u a není k dispozici v BSD mv :

$ ls -l ~/Documents
-rw-rw-r--. 1 seth uživatelů 128 srpna  1 17:32 example.txt
$ ls -l
-rw-rw-r--. 1 seth uživatelů 128 Srp  1 17:42 example.txt
$ mv --update example.txt ~/Documents
$ ls -l ~/Documents
-rw-rw-r-- . 1 seth uživatelů 128 srpen  1 17:42 example.txt
$ ls -l

Tento výsledek je založen výhradně na době úpravy souborů, nikoli na rozdílu těchto dvou souborů, takže jej používejte opatrně. mv je snadné oklamat pouhým dotykem příkaz:

$ cat example.txt
jedna
$ cat ~/Documents/example.txt
jedna
dva
$ touch example.txt
$ mv --update example.txt ~/Documents
$ cat ~/Documents/example.txt
jeden

Je zřejmé, že se nejedná o nejinteligentnější dostupnou funkci aktualizace, ale nabízí základní ochranu proti přepsání posledních dat.

Stěhování

Existuje více způsobů, jak přesunout data, než jen mv příkaz, ale jako výchozí program pro úlohu mv je dobrá univerzální možnost. Nyní, když víte, jaké možnosti máte k dispozici, můžete použít mv chytřejší než kdykoli předtím.


Linux
  1. Jak najít soubor v Linuxu

  2. Jak vytvořit swap v Linuxu

  3. Jak vytvořit odkládací soubor v Linuxu

  1. Jak spravovat možnosti souborů Linux

  2. Jak vyprázdnit soubor protokolu v Linuxu

  3. Jak přejmenovat soubor v Linuxu?

  1. Jak vytvořit soubor v Linuxu

  2. Jak připojit soubor iso v Linuxu

  3. Jak auditovat přístup k souborům v systému Linux