http://www-128.ibm.com/developerworks/aix/library/au-speakingunix5.html
Speaking UNIX, Part 5: Data, data everywhere
Move and manage files stored across multiple systems
主要是讲如何在unix服务器之间传递数据。偶看了之后总结了一下,写了个中文版的。
习惯看英文的还是看原文会好些。
1.tar + ssh
(cd /mydir && tar czf - .) | ssh user@dest "(cd /destdir && tar xzvf
-)"
说明:&& 表示如果前一个命令成功则进行后一个命令(if true then do)
- 在tar命令后面表示标准输入输出。此例中第一个"-"表示tar的输出(压缩的包)不是写到磁盘文件,而是输出到标准输出。第二个"-"则表示tar的输入(需要解压的包)不是来自磁盘文件,而是来自标准输入
()这里的括号,表示是一个subshell。在subshell做的一些操作不影响整个命令的执行,比如cd到/mydir,只是子Shell的一个操作。
从远端拿回来
ssh user@dest "(cd /destdir && tar czf -)"|(cd /mydir && tar xzvf - .)
2.scp
scp -pr /localdir dest:/destdir
说明:-p表示保留所有的文件属性不变
-r表示递归,拷贝整个目录(否则会略过目录)
也可以从远端拿回来
scp -pr dest:/destdir /localdir
3.rsync + ssh
rsync -e ssh -avzP --exclude "logs/" --delete /localdir/ dest:/destdir/
说明:-e ssh 表示通过ssh传送
-a表示achive模式,保持所有的属性不变
-z表示传输过程中压缩
--exclude 不同步此目录
--delete 在远端删除本地已经删除的文件
rsync只会传输改变了的文件,是同步服务器很好的工具。
另外也可以从远端拿目录到本地
rsync -av dest:/destdir/ /localdir
需要注意它的本地目录和远端目录的格式:
rsync -av /src/foo/ /dest
最后一个"/"表示把/src/foo目录下的所有内容拷贝到/dest目录
rsync -av /src/foo /dest
表示把/src/foo这个目录拷贝到/dest目录下
没有评论:
发表评论