GNU/Linux >> Znalost Linux >  >> Linux

Komprese / archivace, která zachovává oprávnění a vlastníka souboru?

Vím, že podobné otázky byly položeny ohledně oprávnění, ale která forma komprese nebo archivace zachovává oprávnění a vlastníky souborů každého souboru a adresáře?

Zvažoval jsem tar.gz formát, ale bylo by to správné?

Potřebuji přesunout 37 GB souborů a adresářů na jiný server a potřebuji, aby bylo po rozbalení vše úplně stejné.

Přijatá odpověď:

Oba tradiční archivační nástroje tar a cpio zachovávají vlastnictví a unixová oprávnění (uživatel/skupina/jiné) a také časová razítka (u cpio nezapomeňte předat -m při extrakci). Pokud se vám nelíbí jejich tajemná syntax¹, můžete použít jejich náhradu POSIX pax (pax -w -pe ) Všechny tyto vydávají nekomprimovaný archiv; vložte archiv do nástroje jako gzip nebo xz jej zkomprimovat (GNU tar má možnosti, jak provést kompresi). Uživatelé a skupiny jsou identifikováni svým jménem; GNU tar má možnost .

Žádný z těchto nástrojů nezachovává moderní funkce, jako je ACL, schopnosti, kontexty zabezpečení nebo jiné rozšířené atributy.

Některé verze tar mohou ukládat ACL. Viz Co použít k zálohování souborů, zachování ACL? S GNU tar předejte --acls při vytváření i rozbalování archivu.

Souborový systém squashfs, jak navrhuje mikeserv, ukládá schopnosti a rozšířené atributy včetně kontextu SELinux, ale ne ACL. (Potřebujete verze, které nejsou příliš staré.) Pokud máte kontexty ACL i zabezpečení, můžete použít souborový systém squashfs a uložit ACL spuštěním getfacl -R v kořenovém adresáři původního souborového systému a obnovte je po rozbalení souborů pomocí setfacl --restore .

Pokud chcete uložit úplně všechno včetně ACL, časových razítek podsekund, rozšířených atributů a atributů specifických pro souborový systém, můžete souborový systém naklonovat. Nevýhodou tohoto přístupu je, že nemůžete pohodlně přímo napsat komprimovanou kopii. Konečným způsobem klonování souborového systému je zkopírovat blokové zařízení; samozřejmě je to plýtvání, protože to kopíruje prázdný prostor. Případně vytvořte souborový systém, který je dostatečně velký na uložení všech souborů, a použijte cp -a pomocí cp příkaz z GNU coreutils ke zkopírování souborů; GNU cp je docela dobrý v kopírování všeho, včetně netradičních funkcí, jako jsou rozšířené atributy a ACL.

Související:TextEdit změnil HTML soubor na RTF při otevření – jak to vrátit zpět?

¹ I když tohle je opravdu přehnané.


Linux
  1. Jak změnit oprávnění a vlastníky pomocí příkazového řádku

  2. Zachování oprávnění souborů a složek pomocí rsync

  3. Jaké role hrají DAC (oprávnění k souborům), ACL a MAC (SELinux) v zabezpečení souborů Linux?

  1. Jak extrahovat soubory .gz a .tar.gz v Linuxu

  2. Jak dekomprimovat formát souboru .xz v Linuxu pomocí nástrojů tar a xz?

  3. Linux – Rozumíte unixovým oprávněním a typům souborů?

  1. Jak zkopírovat oprávnění a vlastnictví souboru do jiného souboru v Linuxu

  2. Priorita uživatele a vlastníka skupiny v oprávněních k souboru?

  3. Samorozbalovací skripty:Tar -xo a Dd?