주어진 미디어 크기에 맞는 tar -T에 대한 파일 세트를 생성합니다.

주어진 미디어 크기에 맞는 tar -T에 대한 파일 세트를 생성합니다.

하나 이상의 디렉토리의 이름과 미디어 크기를 입력으로 취하고 tar에서 사용할 파일 목록을 출력하는 스크립트를 제안할 수 있는 사람이 있습니까 -T(비압축 가정)?

scdbackup/ sdvdbackup일종의 그런 일이 발생하지만 필요하지 않을 만큼 부풀어오르는 일이 가득합니다. 따라서 기본적으로 다음과 같은 것을 찾고 있습니다.

./splitTars file1 file2 .... 2.0T

여기서는 file파일이나 디렉터리일 수 있으며 마지막 매개변수는 미디어 크기(예: 2TB)입니다. 그런 다음 너무 커서 미디어에 담을 수 없는 파일에 대한 경고와 함께 각 tar 아카이브에 대한 파일 목록을 출력해야 합니다.

그러한 상황이 존재하지 않는 경우 한 가지 방법은 찾기를 사용하여 파일 목록을 만들고 크기를 늘리거나 줄여서 재정렬한 다음 목록을 여러 조각으로 자르는 것입니다.

답변1

내 생각에는 당신이 가지고 있는 것 같아요배낭 문제파일 크기.

이는 기본적으로 주어진 파일 세트에서 고정 크기 백업 매체(백팩)에 들어갈 수 있는 최상의 파일 세트를 찾는 것을 의미합니다. 그런 다음 표시된 컬렉션을 사용하여 tar 아카이브를 생성하고 가지고 있는 하드 드라이브나 플래시 드라이브를 사용하여 로컬 컴퓨터에서 파일을 한 번에 하나씩 전송해야 합니다.

귀하의 프로그래밍 기술을 기반으로 Python으로 샘플 솔루션을 설명했습니다.

  1. Python 스크립트에서 모든 입력 매개변수를 가져오고 개별 파일이나 디렉터리의 파일 크기를 찾습니다. du -smPython이 개별 디렉터리의 크기를 찾기 위해 열심히 노력할 필요가 없도록 각 파일이나 디렉터리 인수로 a를 호출 할 수 있습니다 .

  2. 미디어 제한을 초과하는 콘텐츠는 즉시 삭제됩니다.

  3. 나머지를 목록에 추가하고 배낭 알고리즘을 전체 세트에 적용합니다. 등의 사례가 주변에 많이 있습니다.마이크의 솔루션여기.

  4. 라운드 중에 배낭에 추가된 아이템을 제거하고 남은 목록을 가지고 3단계로 돌아갑니다.

  5. 목록의 나머지 모든 항목이 배낭에 들어갈 때까지 위의 3-4-3단계를 반복합니다(즉, 나머지 항목의 전체 크기가 미디어 제한보다 작습니다).

그래야 해요!

답변2

find크기별로 필터링하는 옵션이 있습니다.

# find file1 file2 .... -size -2000G

관련 정보