##scp -- secure copy (remote file copy program) scp = cp + ssh,经过ssh协议将与远程主机互相拷贝文件。shell
使用方法
scp 选项 file_source file_target
对于远程路径,要使用user@remote_ip:file的形式(固然若是你在远程主机上使用了ssh key能够省略)例如:
scp /home/wgjak47/A.md test@192.168.199.15:/tmp/B.md
安全
关于选项 scp的复制选项比cp要少一些,只有递归复制和保留原属性,例如你但愿复制目录并且保留源文件的权限,时间等信息,可使用-r和-p选项: scp -rp /home/wgjak47/secret test@192.168.199.15:/home/test/backup
scp同时也有一部分与ssh的相同的选项。例如能够指定远程主机的ssh端口: scp -rp -P 3307 /home/wgjak47/secret test@192.168.199.15:/home/test/backup
服务器
关于速度,因为使用了加密,相比tftp等简单文件传输协议要慢,可是并不严重。ssh
##rsync remote synchronize,即远程同步。rsync主要用来进行镜像,在同步文件时能够保持原来文件的权限、时间、软硬连接等附加信息。socket
###rsync服务端tcp
sudo apt-get install rsync
2.在rsync的服务端须要配置rsync服务,涉及到如下三个文件:ui
cp /usr/share/doc/rsync/example/rsyncd.conf /etc/
# sample rsyncd.conf configuration filethis
# GLOBAL OPTIONS加密
#motd file=/etc/motd
#log file=/var/log/rsyncd
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
# The init.d script does its own pid file handling,
# so omit the "pid file" line completely in that case.
# pid file=/var/run/rsyncd.pid
#syslog facility=daemon
#socket options=日志# MODULE OPTIONS
[ftp] #认证的模块名,client使用时指定
comment = public archive
path = /var/www/pub # 须要同步的目录 use chroot = yes # 同步前先chroot到同步目录,安全考虑。 # max connections=10
lock file = /var/lock/rsyncd
# the default for read only is yes...
read only = yes
list = yes
uid = nobody #传输文件使用的用户 gid = nogroup #传输文件使用的组别,必定要确认这的用户和用户组可以读取path下的文件。 # exclude =
# exclude from =
# include =
# include from =
# auth users = #认证的用户名,若是没有这行,则代表是匿名 # secrets file = /etc/rsyncd.secrets ## 认证密码文件 strict modes = yes
# hosts allow = #容许访问的hosts # hosts deny = #进制访问的hosts,与前面2选1 ignore errors = no #忽略一些 ignore nonreadable = yes
transfer logging = no # 记录传输日志
# log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
timeout = 600 #超时 refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz #传输时不压缩以节省时间。
更多详细选项能够参阅man page:man rsyncd.conf
wgjak47:thisispwd
文件权限要设定为600,防止密码泄露。
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use my rsync services!
++++++++++++++++++++++++++++++++++++++++++++++
编辑/etc/defalult/rsync,修改RSYNC_ENABLE=true
打通防火墙端口:
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
启用rsync服务(update-rc.d,开机自动启动)
update-rc.d rsync start 20 2 3 4 5
启动rsync服务
service rsync start
###客户端 客户端可使用rsync命令来从服务器同步文件。 rsync的命令格式能够为:
选项:
-r 是递归 -l 是连接文件,意思是拷贝连接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 至关于块设备文件;
-a, --archive 归档模式,表示以递归方式传输文件,并保持全部文件属性,等于-rlptgoD -z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,本身试试。能够看文档;
-e ssh的参数创建起加密的链接。
-u只进行更新,防止本地新文件被重写,注意二者机器的时钟的同时
--progress是指显示出详细的进度状况
--delete是指若是服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
--password-file=/password/path/file来指定密码文件,这样就能够在脚本中使用而无需交互式地输入验证密码了,这里须要注意的是这份密码文件权限属性要设得只有属主可读。
样例:
rsync --list-only wgjak47@192.168.145.5::
列出可用模块
rsync --list-sonly wgjak47@192.168.145.5::ftp
查看ftp下的文件
rsync -avzP wgjak47@192.168.145.5::ftp tmp
用root用户登陆到服务器上,把test数据,同步到本地当前目录test上。固然本地的目录是能够你本身定义的。若是当你在客户端上当前操做的目录下没有test这个目录时,系统会自动为你建立一个;当存在test这个目录中,你要注意 它的写权限。若是加上了--delete选项,同步过程当中会将远程主机已经删除,可是本地仍然存在的文件删除。