Shell 脚本专家指南 学习笔记3 目录的复制
2011-12-11 17:52
567 查看
1 使用cp
cp -Rp * /dest/dir
-R:递归复制目录结构-p:保持原始文件的访问权限、所有权和访问修改时间
问题:没有使用原始文件的创建时间,而是使用了执行复制时的修改时间;不能保持硬链接
使用-a选项,尽可能多地保持了源文件的特性,包括硬链接
cp -a * /dest/dir
2 使用tar
tar -cvf - * | (cd /dest/dir && tar xvfp -)-:通过管道将输出发送到标准输出
问题:通配符*并未包含隐藏在源目录中的所有文件,它遗漏了点(隐藏)文件。
3 使用find
find . -depth | xargs tar -cvf - | (cd ../tar_cp/ && tar xvfp -)
-depth:该选项解决了目录不可写或者不可查找的权限问题;对于后者,可采取先处理目录内容再处理目录本身的方法来解决。
不仅在单机上,还可以通过ssh在网络间进行复制。
find . -depth | xargs tar -cvf - | ssh machine_name `cd /dest; mkdir dir; tar xvfp -`或者:
find . -depth | cpio -dampv {/dest/dir}cpio选项意义如下:
-d:创建需要的目录
-a:重置源文件的访问时间
-m:保护新文件的修改时间
-v:列出已处理文件,展示进展状况
-p:将cpio设为“copy pass-through"模式
更多关于cpio的使用,请参考:/article/7987196.html
也可将cpio与ssh联系起来用:
find . -depth | ssh machine_name `cpio -dampv /dest/dir`
4 使用rsync
rsync -av /src/dir/ /dest/dir ##不会复制/src/dir 目录本身-a:允许复制点文件,并保持所以权限、所有权和修改时间。
关于rsync的使用,请参考:/article/7987192.html
注意,如果删除了/src/dir/ 中的后一个/,则会将复制/src/dir 目录本身
通过网络向远程机器执行复制操作:
rsync -avz -e ssh user@remotehost:/src/dir /local/dest/dir
-z :加上压缩的参数!
-e :使用的通道协定,例如使用 ssh 通道,则 -e ssh
用rsync对网站进行镜像备份:/article/7987194.html
相关文章推荐
- Shell 脚本专家指南 学习笔记1
- Shell 脚本专家指南 学习笔记2 数据重定向
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
- 笔记——shell脚本学习指南
- 【Linux】Shell学习笔记之二——文件和目录管理(创建、删除、复制、查看)
- 【Shell脚本学习指南笔记】重定向文件描述符 2>&1
- linux运用shell脚本统计列出目录文件个数(学习笔记)
- shell脚本学习指南--学习笔记
- 《Shell 脚本学习指南》笔记
- shell 脚本学习指南-笔记
- shell 脚本专家指南笔记
- shell 脚本学习指南-笔记(二)
- shell脚本学习指南笔记(第二章)
- shell脚本专家指南笔记----shell错误调试
- shell脚本学习指南--学习笔记(1~6章)
- shell脚本学习笔记(目录)
- shell脚本学习指南_学习笔记_第1,2章
- Shell脚本学习指南笔记
- Shell脚本学习笔记
- shell脚本学习笔记