7z를 사용하여 디렉토리의 모든 파일과 디렉토리(숨겨진 파일 포함)를 보관하는 방법은 무엇입니까?

7z를 사용하여 디렉토리의 모든 파일과 디렉토리(숨겨진 파일 포함)를 보관하는 방법은 무엇입니까?

내 보관 요구 사항의 특성으로 인해 고정 tar.gz 아카이브가 마음에 들지 않아 대신 7z를 사용했습니다.

이 작업을 수행하려면 다음 명령을 사용합니다.

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*

~/my/folder/모든 내용의 파일 아카이브를 만듭니다 ~/my/folder.7z.

하지만 ~/my/folder/.hiddenFolder그러면 기록 보관소에 들어 가지 않습니다. 이 문제를 어떻게 해결하나요? *모든 파일과 폴더를 반환하면 안 되나요?

답변1

긴 이야기 짧게

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/.

더 많은 예시

디렉토리 구조 예

test1
├── .hidden
└── normal.txt

0 directories, 2 files

다음 명령을 시도해 보세요

  1. 루트 폴더와 모든 내용.

    7za a test1_a.7z ~/test1/
    

    주어진

        Date      Time    Attr         Size   Compressed  Name
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:51 D....            0            0  test1
    2017-08-06 09:23:44 ....A            0            0  test1/.hidden
    2017-08-06 09:23:51 ....A            0            0  test1/normal.txt
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:51                  0            0  2 files, 1 folders
    
  2. 루트 폴더 및 숨겨진 파일 없음

    7za a test1_b.7z ~/test1/*
    

    주어진

       Date      Time    Attr         Size   Compressed  Name
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:51 ....A            0            0  normal.txt
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:51                  0            0  1 files
    
  3. 루트 폴더는 없지만 숨겨진 파일이 포함되어 있습니다(우리가 일반적으로 원하는 것임).

    7za a test1_c.7z ~/test1/.
    

    주어진

       Date      Time    Attr         Size   Compressed  Name
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:44 ....A            0            0  .hidden
    2017-08-06 09:23:51 ....A            0            0  normal.txt
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:51                  0            0  2 files
    

답변2

단일 디렉토리의 내용을 원하는 경우 쉬운 방법은 먼저 해당 디렉토리로 변경하는 것입니다.

cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .

당신이 보고 있는 것은 *그것이 not 로 확장된다는 것입니다 .. 이것은 문서화된 동작이며 이름이 a로 시작하는 파일이 숨겨져 있다고 말하는 주된 이유입니다 .(다른 하나는 ls기본적으로 표시되지 않는다는 것입니다).

디렉토리의 모든 파일을 나열하는 정말 편리한 이식 가능한 방법은 없습니다. 당신은 그것을 사용할 수 있습니다

~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*

그러나 패턴 중 하나와 일치하는 파일이 없으면 패턴은 확장되지 않은 상태로 유지됩니다. Bash에서는 dotglob행간을 특수하게 처리하지 않도록 옵션을 설정할 수 있습니다 .( .그리고 ..여전히 일치에서 제외됩니다).

shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*

extglobksh 또는 이 옵션이 설정된 경우 bash에서 (또는 이 ksh_glob옵션이 설정된 경우 zsh에서) .및 다음을 제외한 모든 파일과 일치하는 패턴을 작성할 수 있습니다 ...

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/@(..?*|.[!.]*|*)

.zsh에는 스키마에서 특별한 처리가 수행되지 않아야 한다고 말하는 더 간단한 방법이 있습니다 .

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*(D)

답변3

아니요, *모든 파일이 반환되어야 하는 것은 아닙니다. 보이는 것만 반환합니다.

더 간단한 해결책은 다음과 같습니다.

cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .

답변4

7z(Linux)를 사용하여 zip 아카이브를 추출했는데 폴더가 zip으로 가득 차 있습니다.

나는 다음을 사용했습니다 :

7z x *.zip -o* to extract the zip files

알아내야 할 사항: 7z a {위 명령의 폴더} -r

위 사항을 염두에 두고 7z a 명령을 사용하지만 추출 섹션에서 생성된 폴더 이름을 사용하여 7z 아카이브를 생성하고 싶습니다. 그럼 우리는 어떻게 해야 합니까?

관련 정보