네트워크를 통해서 파일시스템을 통채로 복사하기?
글쓴이: 권순선 / 작성시간: 화, 2004/01/06 - 12:16오전
http://kldp.net 시스템 업그레이드와 관련해서, 이제 곧 현재 서버 설정을 그대로 복사해서 새 서버로 옮기는 작업을 해야 하는 시기가 오고 있습니다. KLDP.net에서 사용하고 있는 gforge가 설치가 상당히 까다롭고, 고친 부분들도 조금 있고 해서 현재의 파일시스템을 통채로 복사하는 식으로 해서 이전 작업을 수행하려 합니다.
같은 기계에 붙어 있는 hdd라면 그냥 dd를 사용해서 간단히 해결할 수 있겠지만 서로 타입이 달라서 새 서버의 hdd를 기존 서버에 장착할 수가 없습니다. 그러므로 파일시스템을 네트워크를 통해서 통채로 복사해야 합니다.
인터넷 상에서 찾은 몇 가지 방법들이 있는데 그것들은 이 글에 대한 자답으로 다시 달기로 하고요....
혹시 이런 작업을 해 보신 분이 있다면 경험담을 좀 올려 주시면 많은 참고가 될 수 있을 것 같군요.
Forums:
http://lists.debian.org/debian-user/2001
http://lists.debian.org/debian-user/2001/debian-user-200101/msg00207.html 참고
> here is a fun trick:
>
> tar cf - / | ssh -C host 'cd /mnt; tar -xf -'
>
> ssh -C enables compression which is think is default anyway. gzipping
> before going over ssh compression is redunant and unlikely to gain all
> that much.
<g> I also like piping through ssh. Versatile.
WRT compression: data compression works by reducing the redundancy in
data. Given a pefect compression algorithm, there is no redundancy
left. Actual algorithm's aren't perfect, but they're generally close.
So, compressing compressed data is a waste of cycles.
Doesn't particularly matter where you put the compression stage, though
if you let ssh compress, the decompression is handled automagically on
the receiving end.
----
http://murrey.inferential.com/pipermail/pplug/2002-January/000797.html 참고
The only part that's a little ugly is getting rsh to work between the
systems. Once you have that down, it's easy as cake
ok, system A is 172.16.1.10, and system B is 172.16.1.11
System A has the partition you want to copy (/dev/hda6), and B has the
empty partition (/dev/hda8) that's at least as big as /dev/hda6 on A
Set up rsh server on A (either in inetd.conf or in one of the xinetd
modules). Make sure you reset inetd/xinetd to read their new files.
You may also need to tweak /etc/hosts.allow if you use tcpwrappers.
Make sure there is a .rhosts file in A root's home that allows you
access from B. Might be a good time to be off the big Internet, and
make sure you disable rsh, and rhosts when you're through. Ugly
security stuff.
login as root on B.
rsh 172.16.1.10 "dd if=/dev/hda6 bs=1500" > /dev/hda8
I'm using 1500 here to give you the biggest packets ethernet will allow.
The dd command runs on A and writes to standard out on B, which you then
redirect to your local partition. You'll need to fsck the partition
when you're done, and make sure /dev/hda6 is unmounted if at all
possible, or at least not actively being written to when you do this. I
have no idea if this works for fat32 partitions. This will copy every
block, used or not. This runs pretty quick in 100mbit switched lans.
If you don't have a switch, you may wish to use a "crossover" UTP class5
cable and just run back to back.
If you have a sparsely filled partition, cpio/formated output partition,
may be a better command to use than dd. (The time overhead of the file
system is offset by not having to move empty blocks)
Good Luck!
jim
----
http://www.linuxplanet.com/linuxplanet/tutorials/986/4/ 참고
There is another way to copy whole images of disks from a machine already set up.
Instead of installing afresh from a distribution CD or via ftp you can copy the disk image over a local network connection.
The advantage of this approach is that there is no need to take the machines to pieces or alter any jumpers. It is also faster than a NFS network install. This method takes around 20 minutes to copy 800 Meg of disk space even with 10BaseT ethernet and cheap realtek ethernet cards if you follow the directions below.
The disadvantage is that this isn't a method that distribution makers seem to have considered, so an important tool which is needed is missing. This tool is an easy way to copy data over a local network. But of course I have found a simple way round this, and have put the tools on a special floppy disk. The floppy disk image is here.
Just download it and use rawrite or dd as explained in any Installation guide to copy it onto a blank, formatted floppy
Now are you ready with your cables and floppy disks? Let's go.
Use an ordinary Linux boot/install floppy to start up and then configure networking. Next go and grab a configured machine and alter its network settings to be very insecure. Basically you want root to allow unauthenticated remote shells, which is a very bad idea on a live network.
To do this alter /etc/hosts.allow to allow access from the new machine to be configured, uncomment the line
#shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/ in.rshd
In /etc/inetd.conf by removing the leading # sign. Then use the command
killall -HUP inetd
to ensure that the changes to the configuration file are read.
For more details on /etc/inetd.conf and /etc/hosts.allow see our network security article.
Add the hostname of the target machine to /etc/hosts and then add its name to the root .rhost file. (Be sure to undo these changes on the source machine before it goes back on a live network.)
----
http://murrey.inferential.com/pipermail/pplug/2002-January/000790.html 참고
I haven't tried that way, but if you are willing to work at a higher
level, you could just nfs mount and copy or use tar.
There is one situation where I have to back up my system over ftp and I
also don't have space on my local drive. For this, I use ncftpput.
>From the ncftpput man page:
A neat way to pipe the output from any local command into
a remote file is to use the -c option, which denotes that
you're using stdin as input. The following example shows
how to make a backup and store it on a remote machine:
$ tar cf / | ncftpput -c Bozo.probe.net /usr/local/backup.tar
몇가지 생각나는 주의사항들을 잊지 않기 위해 한번 적어 봅니다.c
몇가지 생각나는 주의사항들을 잊지 않기 위해 한번 적어 봅니다.
copy하는 도중에 파일시스템에 변동이 생기는 것을 막기 위해서는 일단 네트워크를 제외한 모든 데몬들은 stop해 두는 것이 좋을 것 같고,
파일시스템 의존적인 속성들을 걸어 둔 것이 있다면 tar등으로 복사할 경우 해당 속성들이 저장되지 않을테니 따로 메모해 두거나 했다가 나중에 수동으로 처리해야 할 것 같고,
swap 파티션은 미리 만들어 놓거나, 아니면 복사된 이후에 /etc/fstab을 수정해야 할 것 같고,
/proc 는 복사되지 않게 하거나, 그냥 파일로 복사되었을 경우 지우고 새로 부팅해야 할 것 같고,
/ 을 복사할 경우 /etc에 네트워크 주소 설정도 그대로 복사될 것이므로 따로 확인해야 할 것 같고,
일단 이 정도가 생각나는군요.
그 외 다른 주의사항이나 경험담/실수담 등이 있다면 올려 주세요.
카피할 대상 머신을, 직접 부트하지 않고, livecd등으로 부팅해서 마
카피할 대상 머신을, 직접 부트하지 않고, livecd등으로 부팅해서 마운트 한 상태로 복사를 한다면 좀더 안전하겠지요..
소스 머신의 경우도 마찬가지로 할 수 있을 것 같습니다. livecd (젠투의 경우, sshd도 돌아가서 유용하게 쓸 수 있지요) 로 부팅하고 /mnt/아래에 마운트하면 변동도 없을테니까요.
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
라이브 cd는 첨 들어봅니다만.. 그거와 비슷하게 cd로 부팅되는
라이브 cd는 첨 들어봅니다만.. 그거와 비슷하게 cd로 부팅되는
System secure cd 가 있습니다. part image 프로그램을 cd로 부팅하는
하게 하는 것인데요.
서버쪽에서 system secure cd로 부팅하신다음에 하드를 통째로 이미지로
뜨신다음에 네트웍으로 받으시거나 (system secure cd 네트웍도 지원합니다.)
아니면 윗분처럼 마운트 시킨 상태에서 복사할 수도 있습니다.
도움이 되길 바랍니다.
아지랑이류 초환상 공콤 화랑... 포기하다.. T.T
partimage가 네트워크 상에서 동작이 가능하더군요. 집에서 간단히
partimage가 네트워크 상에서 동작이 가능하더군요. 집에서 간단히 해 보았는데 일단 파티션 이미지를 뜨는 것은 되었습니다.
partimage 서버를 구축하고, 클라이언트 쪽에서 서버를 지정해서 이미지를 서버쪽에 올리고, 서버쪽에 있는 이미지를 가져와서 클라이언트 쪽에 쓸 수도 있습니다. 대신 이렇게 사용하려면 서버쪽에 hdd공간이 많이 남아 있어야 하더군요.
그리고 조금 이상했던 건, ext2를 백업할 때 fsck를 돌리는데 조금이라도 문제가 있으면 백업이 되지 않습니다. 따라서 백업하려는 클라이언트 쪽도 system rescue cd로 부팅해서 fsck를 미리 돌려놓고 백업하는 것이 안전할 듯 합니다....
http://www.partimage.org 참고....
systemimager라는 툴도 있던데 아직 테스트해 보지는 않았습니다.
gentoo 씨디를 이용하십시오.
1. 먼저 새로운 시스템 대한 커널 변경을 해주십시오. ( 구 시스템에 )
2. gentoo 씨디로 새로운 시스템을 부팅합니다.
3. 파티션닝을 하고 마운트합니다.
4. 네트웍을 잡습니다.
5. rsync 로 복사합니다.
6. chroot 후에 lilo 혹은 grub 으로 부팅가능하게 해줍니다.
7. 커널 변경을 해줍니다.
------------------------------------------------------------------------------------------------
Life is in 다즐링
댓글 달기