日常运维工作中,不可避免的需要在主机之间进行文件的复制和传输。笔者为了使用方便简单的总结了一下linux下常用的文件复制和获取的命令。
1.主机内文件复制命令cp
cp ( copy files and directories )
cp [OPTION] SOURCE DEST
-a | 以存档的模式保存原有文件的所有属性信息 |
-p | 保存原有文件的权限及时间 |
-r | 递归的复制目录内中的所有文件 |
mv ( move or rename files )
总结:
1.目标文件不存在:复制并重命名
2.存在为文件,则覆盖(有提醒)
3.存在为目录,则将文件复制到指定的目录中
扩展:
which mv | 查询命令的绝对路径 |
rpm -qf /bin/mv | 查询命令的安装包 |
rpm -qi coreutils | 查询软件包的详细信息 |
2.主机间文件复制命令scp
主机间常用的文件复制命令为scp,其主机间认证的原理是基于ssh协议完成的。
scp ( secure copy -- remote file copy program )
scp [OPTION] [user]@host:file DEST
-F ssh_config | 指定登录读取的配置文件 |
-l limit | 设置速度限制,单位是Kbit/s |
-P port | 指定ssh端口 |
-p | 保留相关属性 |
-r | 递归复制目录 |
示例如下:
$ scp -l 1000 -P 36000 root@10.210.170.199:/jetty/webapps/test.war /home/redhat test.war 100% 2231KB 131.2KB/s 00:17
3.远程数据获取命令wget
1.简单介绍:
1.支持断点续传、适用于网络不太稳定的环境
2.支持FTP/HTTP/HTTPS等协议方式下载
3.支持代理服务器下载
4.设置方便,基于命令行,完全免费
5.通过网络备份,不支持增量备份。每次都需要将数据重新在网络上进行传输。
2.基本语法:
wget [OPTIONS] URL
-x | 强制在本地建立与服务器上一样的目录 |
-r | 按照递归的方法下载服务器上所有的目录与文件 |
-m | 制作镜像站点 |
-c | 使文件下载时支持断点续传 -t 0 设置重试次数 -w 30 设置重试时间,单位s |
-i | 下载多个文件,后面跟上文件名,文件中按行列出ur |
-m | --reject=gif 表示忽略gif文件 --accept=LIST 表示接受该文件 |
--http-user=USER --http-passwd=PAS | |
-N | 不要下载已经存在的文件 |
3.简单示例:
# wget -c -t 2 -w 30 ftp://username:password@22.11.33.195/aa.txt # wget -N http://xxx.com/data/aa.txt -o cc.txt -a dd.log &
4.文件同步命令rsync
rsync( a fast , versatile , remote (and local) file-copying tool )
1.特点
1.可以镜像完整的目录树和文件系统。可以镜像到本地,可以在网络中进行数据备份。
2.中断之后可以恢复传输,并且易保持文件原有权限。
3.使用"rsync演算法"只传送源文件和目标文件之间不一致的部分。
4.可执行完整备份和增量备份
5.加密数据传输
6.可以基于SSH,rcp等方式也可以直接通过socket连接传输文件。
2.简单安装
# tar xf rsync-3.0.4.tar.gz
# cd rsync-3.0.4
# .configure
# make && make install
3.工作模式
1.本地shell模式(shell应用模式)
# rsync -av /etc/pam.d /tmp/pam/
# rsync -av /etc/pam.d/ /tmp/pam/
2.远程shell模式,其利用SSH执行底层连接和传输加密;
# rsync -av /etc/pam.d/ 192.168.21.2:test
3.列表模式,其工作方式与ls相似,即列出源的内容;-nv
# rsync -a 192.168.21.2:test
# rsync -a /etc/pam.d/
4.服务器模式
rsync以守护进程方式运行,接收文件传输请求。在使用时,可以使用rsync命令把文件发送给守护进程,也可以向它请求文件。服务器模式非常适合创建中心备份服务器或项目存储库。
注意:
1.远程shell模式和服务器模式的差异在于,后者在源和目标名中使用两个冒号 (:)
rsync -rl /www/htdocs HOST:/www
rsync -rl /www/htdocs HOST::htdocs
2.rsync命令使用中,如果源参数的末尾有斜杠,就会复制指定目录的内容,而不复制目录本身。目标参数末尾的斜杠没有作用。
如下面的命令会把/mydata/data目录中的所有文件复制到/backups目录中:
rsync /mydata/data/ /backups/
4.常用选项
-a | 以归档模式传输 |
-v | 显示详细信息 |
-z | 传输过程对数据进行压缩 |
-n | 试运行,会预览每个文件操作 |
--progress | 显示进度条 |
--bwlimit | 设置传输速率 |
5.企业案例:利用RSYNC搭建远程容灾备份系统
5.1.server
1.添加如下配置文件
# vim /etc/rsyncd.conf # Section 1: Global settings uid = nobody gid = nobody use chroot = no max connections = 5 #限制模块最大并发连接数,默认值为0即无限制 strict modes = yes #设置是否检查口令文件的权限,yes则要求密码文件权限为root权限 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log # Section 2:Directory to be synced [web] #定义一个模块的开始(模块名称) path = /www/web ignore errors = yes read only = no #客户端可以上传文件 write only = no #客户端可以下载文件 hosts allow = 172.16.0.0/16 hosts deny = * list = false #是否列出客户请求时的模块列表。默认为ture (这里设置隐藏模块) uid = root gid = root auth users = xkun #设置用于连接的用户名,多个之间通过空格和逗号隔开 secrets file = /etc/server.pass
2.添加密码配置文件
# vim /etc/server.pass xkun:redhat # chmod 600 /etc/server.pass
3.查看相关帮助信息
# man rsyncd.conf
4.启动守护进程
# /usr/local/bin/rsync --daemon # ps -ef | grep rsync
5.2.client
备份机上不用做任何设置,只需同步即可。
# vim /etc/client.pass redhat # chmod 600 /etc/client.pass # /usr/local/bin/rsync -avz --progress --delete xkun@172.16.21.1::web /web.net \ --password-file=/etc/client.pass
以上就是笔者最近工作中经常使用的文件复制和同步命令。错误地方,欢迎大家吐槽~~
转载于:https://blog.51cto.com/harisxiong/1552524