scp = cp + ssh,通过ssh协议将与远程主机互相拷贝文件。 使用方法 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等简单文件传输协议要慢,但是并不严重。 rsync remote synchronize,即远程同步。rsync主要用来进行镜像,在同步文件时可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync服务端 首先安装rsync: sudo apt-get install rsync 2.在rsync的服务端需要配置rsync服务,涉及到以下三个文件: rsyncd.conf(主配置文件) 默认位于/etc下,如果没有请从/usr/share/doc/rsync/example/处复制样例文件到/etc下。 cp /usr/share/doc/rsync/example/rsyncd.conf /etc/ # sample rsyncd.conf configuration file # 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 rsyncd.secrets(密码文件) 密码文件可以自己指定,默认在/etc/rsyncd.secrets。格式为用户名:密码 例如: wgjak47:thisispwd 文件权限要设定为600,防止密码泄露。 rsyncd.motd(rysnc服务器信息) 它是定义rysnc服务器信息的,也就是用户登录信息。比如让用户知道这个服务器是谁提供的等;例如: ++++++++++++++++++++++++++++++++++++++++++++++ Welcome to use my rsync services! ++++++++++++++++++++++++++++++++++++++++++++++ 启用rsync服务(Debian): 编辑/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的命令格式可以为: rsync [OPTION]… SRC [SRC]… [USER@]HOST:DEST 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:“分隔符时启动该模式。 rsync [OPTION]… [USER@]HOST:SRC DEST 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:“分隔符时启动该模式。 rsync [OPTION]… SRC [SRC]… DEST 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号”:“分隔符时就启动这种工作模式。 rsync [OPTION]… [USER@]HOST::SRC [DEST] 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::“分隔符时启动该模式。 rsync [OPTION]… SRC [SRC]… [USER@]HOST::DEST 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::“分隔符时启动该模式。 rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST] 列远程机的文件列表。这类似于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选项,同步过程中会将远程主机已经删除,但是本地仍然存在的文件删除。 转载请保留固定链接: https://linuxeye.com/Linux/2058.html |