리눅스에서 파일을 복사할 때, cp 를 이용할 경우 문제가 되는 경우가 있을 수 있습니다.


파일의 사용자, 그룹이나 특수 권한이 유지가 안되는 것,


그리고 파일의 크기가 너무 커서 안되는 경우가 그런 경우입니다.


이럴 때는 tar 를 이용해서 복사를 할 수 있는데, 명령어간에 파이프 (|) 를 이용하면,


한번의 명령으로, 추가의 하드디스크 공간없이 할 수 있습니다.


$ tar cvf - . | (cd ../b/ ; tar xvf -)


예를 보면 다음과 같습니다.


$ ls
a  b
$ ls a/
netkit-ftp_0.17-25.debian.tar.gz  netkit-ftp_0.17-25.dsc  netkit-ftp_0.17.orig.tar.gz
$ ls b/
$
$ cd a/
$ ls
netkit-ftp_0.17-25.debian.tar.gz  netkit-ftp_0.17-25.dsc  netkit-ftp_0.17.orig.tar.gz
$ tar cvf - . | (cd ../b/ ; tar xvf -)
./
./netkit-ftp_0.17-25.debian.tar.gz
./netkit-ftp_0.17.orig.tar.gz
./
./netkit-ftp_0.17-25.debian.tar.gz
./netkit-ftp_0.17-25.dsc
./netkit-ftp_0.17.orig.tar.gz
./netkit-ftp_0.17-25.dsc
$
$ cd ../b
$ ls
netkit-ftp_0.17-25.debian.tar.gz  netkit-ftp_0.17-25.dsc  netkit-ftp_0.17.orig.tar.gz
$