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.
¹ I když tohle je opravdu přehnané.