권한과 파일 소유자를 유지하면서 압축/보관하시겠습니까?

권한과 파일 소유자를 유지하면서 압축/보관하시겠습니까?

누군가 권한에 관해 비슷한 질문을 한 것을 알고 있지만 어떤 형태의 압축 또는 보관이 각 파일 및 디렉터리에 대한 권한과 파일 소유자를 보존합니까?

tar.gz형식을 고민중인데 이게 적당한가요?

37GB의 파일과 디렉터리를 다른 서버로 이동해야 하며 모든 것이 압축되지 않은 상태와 정확히 동일해야 합니다.

답변1

두 가지 기존 아카이빙 도구아스팔트그리고CPIO소유권과 Unix 권한(사용자/그룹/기타)은 물론 타임스탬프도 보존합니다(cpio 사용, -m추출 시 반드시 전달). 당신이 그 사람을 좋아하지 않는다면모호한 구문1. POSIX 대체품을 사용할 수 있습니다공원( pax -w -pe) 이들 모두는 압축되지 않은 아카이브를 출력합니다. 아카이브를 압축 gzip하거나 같은 도구 로 파이프합니다 xz(GNU tar에는 압축 옵션이 있습니다). 사용자와 그룹은 이름으로 식별됩니다. GNU tar에는 옵션이 있습니다.

이러한 도구 중 어느 것도 ACL, 기능, 보안 컨텍스트 또는 기타 확장 속성과 같은 최신 기능을 유지하지 않습니다.

일부 tar 버전은 ACL을 저장할 수 있습니다. 바라보다파일을 백업하고 ACL을 보존하려면 무엇을 사용해야 합니까?GNU tar를 사용하면 --acls아카이브를 생성하고 압축을 풀 때 둘 다 전달합니다.

다음과 같은 squashfs 파일 시스템Mike Self가 제안한, SELinux 컨텍스트를 포함하여 기능 및 확장 속성을 저장하지만 ACL은 저장하지 않습니다. (당신은해야덜 골동품 버전.) ACL과 보안 컨텍스트가 모두 있는 경우 squashfs 파일 시스템을 사용하고 원래 파일 시스템의 루트에서 실행하여 ACL을 저장 getfacl -R하고 setfacl --restore.

ACL, 1초 미만 타임스탬프, 확장 속성, 파일 시스템별 속성을 포함한 모든 것을 저장하려면 파일 시스템을 복제하면 됩니다. 이 접근 방식의 단점은 압축된 복사본을 직접 편리하게 작성할 수 없다는 것입니다. 파일 시스템을 복제하는 궁극적인 방법은 블록 장치를 복사하는 것입니다. 이는 빈 공간을 복사하기 때문에 낭비입니다. 또는 모든 파일을 저장할 만큼 큰 파일 시스템을 만들고 GNU coreutils의 cp -a명령을 사용하여 cp파일을 복사합니다. GNU cp는 확장 속성 및 ACL과 같은 비전통적인 기능을 포함하여 모든 것을 복사하는 데 매우 능숙합니다.

1 이건 사실 좀 과장된 표현이긴 합니다.

답변2

Linux 시스템에 대해 이야기하는 경우 다른 옵션은 다음과 같습니다.호박 파일 시스템. 매우 높은 압축 비율을 달성하는 경우가 많으며 압축 프로세스 자체는 멀티스레드이므로 모든 프로세서 코어를 압축 작업에 적용할 수 있습니다.

squashfs 아카이브는 파일 시스템이라는 점에서 대부분의 다른 유형과 다릅니다. Linux Live 디스크를 부팅해 본 적이 있다면 아마도 이것을 본 적이 있을 것입니다. 거의 모든 것이 squashfs 아카이브를 루트 파일 시스템으로 마운트하여 작동합니다. 버전 2.6.34부터 squashfs는 바닐라 Linux 커널에서 지원됩니다. 따라서 이는 모든 최신 Linux 시스템에서 매우 다재다능합니다.

Squash는 모든 gzip, lzma, lzo, xz 또는(커널 3.19부터)lz4 압축 방법. Squash Archive의 콘텐츠를 설치하고 액세스하려면 도구가 전혀 필요하지 않으며 다음을 수행하면 됩니다.

mount ./img.sfs /mnt; cd /mnt

...이해하기 위해서요. 그러면 커널의 네이티브가 아카이브의 내용을 제공합니다.가상 파일 시스템읽기 전용 설치이므로 다른 유형의 파일과 마찬가지로 그 안의 모든 파일을 읽을 수 있으며 아카이브의 압축을 풀 필요가 없습니다.(필요에 따라 Linux 커널 자체에 의해 디스크 캐시로 즉시 처리됨). 실제로 최신 커널에서 lz4 지원을 사용하면 다음을 수행할 수 있습니다.기본 속도 (어떤 경우에는 더 빠를 수도 있음)마찬가지로 압축 파일 액세스에 대한 CPU 사용량은 증가합니다.

squashfs 아카이브를 생성하거나 압축을 풀려면 squashfs-tools 패키지를 설치해야 합니다. 제가 아는 배포판에서는 보통 기본적으로 설치되지 않지만, 패키지 관리자를 통해 패키지를 제공하지 않는 배포판도 본 적이 없습니다. 설치 후 다음과 같은 아카이브를 만들 수 있습니다.

echo 'this is my new file' >~/Downloads/newfile.txt
mksquashfs ~/Downloads ./mysqsh.sfs -comp xz

Parallel mksquashfs: Using 6 processors
Creating 4.0 filesystem on ./mysqsh.sfs, block size 131072.
[===================================================-] 1018/1018 100%

Exportable Squashfs 4.0 filesystem, xz compressed, data block size 131072
    compressed data, compressed metadata, compressed fragments, compressed xattrs
    duplicates are removed
Filesystem size 12592.01 Kbytes (12.30 Mbytes)
    57.19% of uncompressed filesystem size (22019.04 Kbytes)
Inode table size 8482 bytes (8.28 Kbytes)
    23.91% of uncompressed inode table size (35477 bytes)
Directory table size 10210 bytes (9.97 Kbytes)
    42.90% of uncompressed directory table size (23802 bytes)
Xattr table size 3976 bytes (3.88 Kbytes)
    48.67% of uncompressed xattr table size (8170 bytes)
Number of duplicate files found 61
Number of inodes 1064
Number of files 926
Number of fragments 68
Number of symbolic links  6
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 132
Number of ids (unique uids + gids) 1
Number of uids 1
    mikeserv (1000)
Number of gids 1
    mikeserv (1000)
mksquashfs ... 7.08s user 0.35s system 462% cpu 1.607 total

보시다시피 - 파일 권한을 명확하게 존중합니다. 확장된 파일 시스템 파일 속성도 보존하고 존중합니다.(xattrs)대부분의 상황에서. 보시는 압축비는또한내 일반 파일 시스템에 대한 기본 lzo 압축 -(내 루트 파일 시스템은 btrfs이고 모든 파일은 lzo로 압축됩니다)- 말할 것도 없이 많다.~/Downloads먼저 다운로드한 압축 파일이 차지합니다.

이는 자체적으로 적절한 파일 시스템으로 즉시 마운트 가능합니다.

 sudo mount ./mysqsh.sfs /mnt;   \
 cd /mnt; cat newfile.txt; cd -; \
 sudo umount /mnt

this is my new file

항상 그렇듯이 모든 마운트에는 일반적으로 루트 권한이 필요하지만 /etc/fstab원하는 경우 다른 마운트와 마찬가지로 squashfs 마운트의 이름을 지정할 수 있습니다.

마지막으로, squashfs 아카이브의 압축을 풀기 위해 높은 권한이 필요하지 않으며 unsquashfs도구 만 있으면 됩니다.(squashfs-tools 패키지에서도 사용 가능):

unsquashfs -d /tmp/mysqsh ./mysqsh.sfs; \
cd /tmp/mysqsh; cat newfile.txt

Parallel unsquashfs: Using 6 processors
933 inodes (1025 blocks) to write
[=================================================|] 1025/1025 100%

created 927 files
created 132 directories
created 6 symlinks
created 0 devices
created 0 fifos

this is my new file

답변3

예. tar는 소유권과 권한을 유지합니다.

위키피디아:아스팔트

tar로 생성된 아카이브된 데이터 세트에는 타임스탬프,소유권,파일 액세스 권한및 디렉토리 구성.

관련 정보