예: 20,000개의 이미지가 있고 이를 CD(폴더당 최대 700MB)로 굽기 위해 폴더로 그룹화해야 한다고 가정해 보겠습니다.
일반: N개의 파일이 있고 모든 그룹이 대략 같은 크기가 되도록(최대한 가깝게) M개의 그룹으로 분할해야 합니다.
M개의 그룹으로 또는 크기가 다른 그룹으로...무엇이든 가능합니다
이것은 생각할 필요도 없는 것처럼 보이지만... 어떻게 해야 합니까?
답변1
가정:수천 개의 파일(총 700MB 이상)이 포함된 폴더를 각각 700MB의 별도 디렉터리로 분할하여 여러 CD에 구울 수 있도록 하려고 합니다.
Linux에서는 다음과 같은 스크립트를 사용할 수 있습니다.숫자 분할또는분할-의 일부제니소이미지(데비안/우분투에서). Windows/Wine을 선호하는 경우 유사한 앱을 사용할 수 있습니다.폴더 도끼.
예
테스트 시나리오
# Create 2000 files of 1MB (sparse) each.
mkdir allimages && cd $_
for i in {1..2000}
do
dd if=/dev/zero of=image$i.jpg bs=1 count=0 seek=1M
done
현재 2000개의 파일(2GB)이 있고 이를 3개의 디렉터리로 분할하고 싶습니다.
$ ls -la | tail
-rw-rw-r-- 1 cmihai cmihai 1048576 Dec 4 12:54 image992.jpg
-rw-rw-r-- 1 cmihai cmihai 1048576 Dec 4 12:54 image993.jpg
Dirsplit을 설치합니다. 우분투에서는 genisoimage
패키지 에 포함되어 있습니다 .
$ apt-cache search dirsplit
genisoimage - Creates ISO-9660 CD-ROM filesystem images
$ sudo apt-get install genisoimage
분할
# Get usage / help
dirsplit -H
# Dry run (get list of changes):
dirsplit --no-act --size 700M --expmode 1 allimages/
# Actual run:
$ dirsplit --size 700M --expmode 1 allimages/
Building file list, please wait...
Calculating, please wait...
....................
Calculated, using 3 volumes.
Wasted: 105254 Byte (estimated, check mkisofs -print-size ...)
# List of files per directory can be found in catalog files you can use with mkisofs.
$ ls
allimages vol_1.list vol_2.list vol_3.lis
숫자 분할
참고: 기본적으로 파일은 소스에 하드 링크되어 있습니다.
$ wget https://raw.githubusercontent.com/mayanez/dsplit/master/dsplit.py
$ python dsplit.py -s 700 -v allimages/ out/
Volume 01:
allimages/: 700 files (700.00 MB).
Total: 700.00 MB (700 files, 1 dirs)
Volume 02:
allimages/: 700 files (700.00 MB).
Total: 700.00 MB (700 files, 1 dirs)
Volume 03:
allimages/: 600 files (600.00 MB).
Total: 600.00 MB (600 files, 1 dirs)
덫:
- 내 테스트에서는 스파스 파일을 사용했습니다. 스파스 파일, 하드 링크 및 소프트 링크를 어떻게
dsplit
/ 처리하는지 확인해야 합니다 .dirsplit