나는 현재 사용을 시도하고있다. tar
과 split
Time Machine 백업 데이터베이스의 DVD 크기의 아카이브를 가져 오는 중입니다. 이번에는 외장 드라이브에 두 개의 대용량 Backups.backupdb 폴더가 들어갈 수있는 파티션이 있으므로이 작업을 진행할 것입니다. 그러나 작고 빠른 방법이 있는지 알고 싶습니다.
내가 뭘하고 싶은지 : 내 폴더의 4.7GB 아카이브를 하나씩 만들고 차례대로 디스크에 각각 씁니다. 최종 결과는 내용이 하드 드라이브에 복사 된 다음 추출 명령을 실행하여 원본 100 + GB 폴더의 복사본을 구성 할 수있는 DVD 세트입니다. 또한이 디스크 중 하나 이상 (또는 그 이상)이 손상된 경우에도 아카이브가 무결성을 유지할 수 있다면 매우 좋습니다. 전체 프로세스는 4.7GB 이상의 메모리를 필요로하지 않습니다. 데이터를 내 디스크 굽기 프로그램에 파이핑하고 하드 디스크에 아무 것도 쓰지 않는 것이 좋습니다. 타르를 drutil (또는 다른 디스크 굽기 응용 프로그램)으로 분할 할 수 있으며,이 모든 중단을 포함하여 몇 십여 개의 DVD를 처리 할 수 있습니까?
내가 지금하고있는 일 : 나는 아카이브를 만들기 위해 tar를 실행하고 그 결과를 더 작은 아카이브들로 나눕니다 :
sudo tar cvjsp /Volumes/BackupDisk/Backups.backupdb/ | split -d -b 4480m - Backups.backupdb.tar.bz2.
이것은 내가 DVDs에 기록 될 파일들 (Backups.backupdb.tar.bz2.01, Backups.backupdb.tar.bz2.02, …)을 제공한다. 이들은 압축 된 아카이브만큼 많은 공간을 차지합니다 (물론). 그러나 이제는이 파일과 원본 데이터로 모두 존재하므로 백업의 크기가 거의 두 배로 늘어나므로 많은 여유 공간이 필요합니다. 나는 그것을 지금 가지고 있지만, 이것은 더 이상 오래 가지 않을 것입니다 …
어떤 아이디어? 하드 드라이브를 광 미디어에 어떻게 백업합니까?
최신 정보: 오늘 아침 일찍 일을 시작했는데, 직장에 나가야 할 때 일했는데, 다시이 일로 돌아 왔습니다.
답변
시간과 슬픔을 덜어주고 광학 미디어 대신 (또는 추가적으로) 백업 할 외장 HDD를 선택하십시오.
답변
에서 스크립트로 내 다른 대답 이 질문에도 적합했습니다. DVD에 부품을 쓰는 스크립트를 채택했습니다.
#!/bin/bash
# (c) whitequark 2010
set -e
if [ $# != 2 ]; then
echo "Usage: $0 <filename>"
echo " This script will split file to multiple DVD-sized parts,"
echo " starting from the end, and truncating the original file"
echo " in process."
echo " Use at your own risk."
exit 0
fi
filename=$1
partsize=4700000000
size=$(stat -c '%s' "${filename}")
parts=$(($size / $partsize))
do_split() {
_part=$1
_size=$2
_partname="${filename}.$(printf '%04d' $_part)"
echo "Splitting part $_part"
echo $(($partsize * ($_part - 1)))
dd if="${filename}" of="${_partname}" \
count=1 bs=$partsize skip=$(($_part - 1))
echo "Truncating source file"
truncate "${filename}" --size="-$_size"
growisofs -Z /dev/dvd -R -J -dvd-compat "${_partname}"
}
lastsize=$(($size % $partsize))
if [ $lastsize != 0 ]; then
do_split $(($parts + 1)) $lastsize
fi
for i in $(seq $parts -1 1); do
do_split $i $partsize
done
rm "${filename}"