아마도 여러분은 링크파일을 포함한 디스크의 구조전체를 복사하기 원할 것이다.
그러나, /new-disk 디렉토리는 새로운 디스크 자체이므로 복사를 해서는 안된다.
게다가, 새로운 디스크에 /proc 디렉토리를 만들기를 원하지만, 그 내용을 복사할 수 없을 것 이다. /proc에 들어 있는 파일들은 실질적인 파일들이 아니라 시스템상에서 돌아가는 프로세 스들에 대한 정보를 가지고 있는 virtual시스템 파일이기 때문이다.
여기에는 새로운 디스크로 파일들을 복사하기 위한 4가지의 다른 방법들이 있다. 만일 당신이 용량이 큰 디스크와 적은 메모리를 사용하고 있는 상태라면 시간이 꽤 걸릴 것이며, 약 초당 10M에 해당하는 용량의 파일들이 복사된다고 생각하면 될 것이다.
다른 가상 터미널에서 df라는 명령어를 통해서 복사 진행상황을 확인해 볼 수 있다. 또 다른
방법으로는 watch df나 watch ls -l /new-disk라는 명령으로 2초마다 업데이트되는 정보를
볼 수 있을 것이다. 단 watch라는 명령이 시스템에 부하를 주게 되어 복사속도를 떨어뜨릴
수 있다는 사실에 대해서 명심하기 바란다.
cp -ax / /new-disk
이 방법은 매우 쉽다. 그러나 이러한 방법은 복사하고자 하는 리눅스 시스템이 하나의 디스크
파티션으로 되어 있는 경우에 한해서 제대로 작동할 것이다. -a 옵션은 preserves the original
system as much as possible. -x 옵션은 cp명령어를 단일 파일시스템으로 제한한다.
이러한 옵션의 선택은 /new-disk와 /proc디렉토리를 복사하지 않도록 한다.
cd / && cp -a `/bin/ls -1A | egrep -v "^new-disk$|^proc$"` /new-disk
루트 디렉토리로 이동한 후 /new-disk와 /proc를 제외한 모든 파일과 디렉토리를
/new-disk로 복사를 한다. 여기서 ls다음에 오는 첫번째 옵션은 영문자 'L'이 아닌 아
라비아 숫자 1을 뜻한다.
(cd / && tar cpf - . --exclude new-disk --exclude proc) | (cd /new-disk && tar xpf -)
먼저 루트 디렉토리로 이동한 후 /new-disk와 /proc를 제외한 모든 것들을 tar시킨
후 /new-disk로 이동하여 untar를 실시한다. 여기서 --exclude 뒤에 오는 디렉토리
이름들 앞에서 뒤에는 /가 들어가서는 안된다.
주의 : tar의 -l 옵션이 사용되지 않았는데, 이것은 /new-disk와 /proc의 내용을 복 사하지는 않지만, 디렉토리는 다시 만들기 때문이다, 따라서, tar의 -l 옵션은 cp 의 -x 옵션과 다르게 작동한다.
# cp -a /bin /boot /dev /etc /home /lib /lost+found /mnt /root /sbin /tmp /usr /var /new-disk
이 명령에서 마지막에 있는 /new-disk디렉토리가 대상 디렉토리가 된다. 따라서 루트 에 있는 모든 디렉토리를 /new-disk로 복사를 하겠다는 뜻이다.
이와 같은 방법은 당신이 가지고 있는 리눅스 시스템 디렉토리들을 /new-disk와 /proc 를 제외한 나머지 디렉토리를 루트를 기준으로 나열을 하기만 하면 된다. 만일 다른 때문에 다른 명령을 사용할 수 없다면 복사하기 원하는 디렉토리들을 임의적으로 나열해서 이 명령 을 사용할 수 있다.
만일 이 방법을 사용한다면, 루트 디렉토리 밑에 있는 다른 파일들을 다른 명령을 이용해서 복사해야 한다. 특히나, Debian과 Slackware를 사용하고 있는 시스템에서는 루트디렉토리 밑에 파일들이 존재하므로 다음과 같은 명령이 반드시 필요하다
# cp -dp /* /.* /new-disk
위에서 나열한 4가지 방법들을 사용한 후, 새로운 디스크에 /proc디렉토리를 반드시 만들어 야 한다.
# umount /new-disk
# fsck.ext2 -f /dev/hdb1
# mount -t ext2 /dev/hdb1 /new-disk
만일 파일들이 제대로 복사가 되었는지 확인하고자 한다면 다음에 있는 스크립트를 사용해도 된다.
#!/bin/sh
cd /
for file in `/bin/ls -1A | egrep -v '^new-disk$|^proc$'`
do
find $file -xtype f -exec cmp \{\} /new-disk/\{\} \;
done
(단 Slackware : 기본적인 Slackware 파일들만을 설치하였을 경우에는 cmp혹은 diff명령어
는 설치되지 않는다.)