bash를 사용하여 모든 디렉토리를 보관하는 방법은 무엇입니까?

bash를 사용하여 모든 디렉토리를 보관하는 방법은 무엇입니까?

Bash를 천천히 배우려고 노력하고 있지만 사용하려는 실제 예제가 없으면 더 기술적인 측면을 파악하기가 어렵습니다. 이를 위해 온라인 저장을 준비하기 위해 bash(및 7zip)를 사용하여 일부 사진을 보관하는 방법을 알고 싶습니다.

본질적으로 각 디렉토리에 대해 .7z 아카이브를 만들고 각 아카이브에 문제의 디렉토리와 동일한 이름을 할당하는 것만 큼 "간단"하다고 생각합니다. 중요한 경우 모든 디렉토리의 이름은 공백 없이 지정됩니다.

모든 제안에 감사드립니다.

답변1

foo디렉터리를 foo.7z using이라는 이름의 아카이브 로 압축하는 방법은 7z명령 a("add")을 사용하는 것입니다.

7z a foo.7z foo

여러 디렉터리에 대해 이 작업을 수행하려면 루프를 사용할 수 있습니다.

for dir in foo bar baz; do
    7z a "$dir".7z "$dir"
done

(공백이 포함된 디렉터리 이름은 $dir따옴표로 묶여 있기 때문에 안전하지만 대시로 시작하는 디렉터리 이름에는 안전하지 않습니다. 이로 인해 해당 디렉터리 이름 7z을 옵션으로 해석하려고 시도하게 됩니다.)

보관하려는 디렉터리 이름이 패턴을 공유하는 경우 모든 디렉터리를 명시적으로 나열하는 대신 for 루프에서 해당 패턴을 사용할 수 있습니다(예: for dir in [0-9][0-9][0-9][0-9][0-9][0-9]-*; ....

7z 문서에서는 소유권 정보를 보존하지 않기 때문에 Unix에서 보관하기 위해 7z 형식을 사용하는 것에 대해 경고합니다. 이것은 당신에게 중요할 수도 있고 중요하지 않을 수도 있습니다.

관련 정보