scp与rsync

scp – secure copy (remote file copy program)

scp = cp + ssh,通过ssh协议将与远程主机互相拷贝文件。

  • 使用方法
    scp 选项 file_source file_target
    对于远程路径,要使用[email protected]_ip:file的形式(当然如果你在远程主机上使用了ssh key可以省略)例如:
    scp /home/wgjak47/A.md [email protected]:/tmp/B.md
  • 关于选项
    scp的复制选项比cp要少一些,只有递归复制和保留原属性,例如你希望复制目录而且保留源文件的权限,时间等信息,可以使用-r和-p选项:
    scp -rp /home/wgjak47/secret [email protected]:/home/test/backup
    scp同时也有一部分与ssh的相同的选项。例如可以指定远程主机的ssh端口:
    scp -rp -P 3307 /home/wgjak47/secret [email protected]:/home/test/backup
  • 关于速度,由于使用了加密,相比tftp等简单文件传输协议要慢,但是并不严重。

rsync

remote synchronize,即远程同步。rsync主要用来进行镜像,在同步文件时可以保持原来文件的权限、时间、软硬链接等附加信息。

rsync服务端

  1. 首先安装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]… [[email protected]]HOST:DEST
    拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号”:“分隔符时就启动这种工作模式。
  • rsync [OPTION]… [[email protected]]HOST:SRC DEST
    使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:“分隔符时启动该模式。
  • rsync [OPTION]… SRC [SRC]… DEST
    使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:“分隔符时启动该模式。
  • rsync [OPTION]… [[email protected]]HOST::SRC [DEST]
    从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::“分隔符时启动该模式。
  • rsync [OPTION]… SRC [SRC]… [[email protected]]HOST::DEST
    从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::“分隔符时启动该模式。
  • rsync [OPTION]… rsync://[[email protected]]HOST[:PORT]/SRC [DEST]

选项:

-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传输,不过只要在命令中省略掉本地机信息即可。

样例:
rsync -avzP [email protected]::test test
这个命令的意思就是说,用root用户登录到服务器上,把test数据,同步到本地当前目录test上。当然本地的目录是可以你自己定义的。如果当你在客户端上当前操作的目录下没有test这个目录时,系统会自动为你创建一个;当存在test这个目录中,你要注意 它的写权限。

时间: 2024-10-26 20:26:41

scp与rsync的相关文章

无需输入密码的scp/ssh/rsync操作方法

一般使用scp/ssh/rsync传输文件时,都需要输入密码.下面是免密码传输文件的方法. 假设要在两台主机之间传送文件,host_src & host_dst.host_src是文件源地址所在的机器,host_dst是目的地址所在的机器. 1. 在host_src机器上,用执行scp/ssh/rsync命令的用户登录,执行下面的命令: $ ssh-keygen -t rsa 按回车健继续,默认的public key会被存放在 ~/.ssh/id_rsa.pub: Your public key

Centos下关于ssh、scp与rsync设置与应用

最近应公司要求,需要对文件数据进行远程传输与备份操作,特此写了一篇文章记录下了关于ssh.scp以及rsync的应用配置全过程,可能过程太过罗嗦,但主要就是想在不遗漏每个过程的情况下对此进行阐述,希望大家能够体谅.当然类似的文章还有很多,本文仅以个人的名义来写的,不喜勿喷!如果文章中有什么错误的地方还请各位大神多多指点!万分感谢!一.ssh在文件共享里面的应用这个ssh可不仅仅是一个远程登录的一个服务,其实呢!它包括了几个组件:ssh(远程登录).sftp(文件共享[类似FTP]).scp(文件

通过在shell脚本中用scp或rsync实现远程同步文件

通过在shell脚本中用expect实现远程scp文件 shell expect的简单用法 http://myunix.blog.51cto.com/191254/1095074 http://jie-hui-520.blog.163.com/blog/static/60074301201022610217249/ Linux rsync 同步实践 http://my.oschina.net/congqian/blog/137847 #!/bin/bash /usr/loca/rsync/bin

第十二单元练习题 关于压缩文件传送 scp和rsync

<<<第十二单元练习>>> 1.在server主机中把/etc目录打包压缩到/mnt中,名字为etc.tar.gz //把目录切换到mnt下 //创建一个名叫 etc.tar的文件集 查看当前mnt下的文件,然后把它压缩成gz格式,然后返回上层目录准备发送. 2.复制server主机中的etc.tar.gz到desktop主机的/mnt中 用scp远程文件传送发送文件. 其格式为 scp filename [email protected]:/filename 3.同步

linux同步工具scp、rsync

linux下的文件同步主流的应该有两种方式,一种是scp(基于local.ssh),另外一种是rsync(多种方式local.ssh.rsyncd) scp执行命令格式 scp [OPTIONS] source destination 举例(本地到远程,反之远程到本地) scp /home/daisy/full.tar.gz [email protected]:/home/root 复制目录加参数 -r -v参数来提供SCP进程的详细信息 -p参数会帮到把预计的时间和连接速度会显示在屏幕上. -

远程文件传输工具sftp、scp、rsync

一.scp 格式 scp [options] [[email protected]]host : /sourcefile /destpathscp [options] /sourcefile [[email protected]]host:/destpath 常用选项:- -C: 压缩数据流-r: 递归复制-p: 保持原文件的属性信息(有时会用到)-q: 静默模式-P PORT: 指明remote host的监听的端口 scp只时和临时的文件传输,其基于ssh之上,所以安全性比较有保证,但是功能

scp、rsync、xsync

scp. 拷贝完全相同 scp -r etc/hadoop/dfs.hosts [email protected]:/usr/local/hadoop/hadoop-2.7.6/etc/hadoop/ rsync.拷贝有差异的文件 rsync -rvl etc/hadoop/hdfs-site.xml [email protected]:/usr/local/hadoop/hadoop-2.7.6/etc/hadoop/ xsync.循环复制文件到所有节点相同的目录下 !/bin/bash #1

SCP 和 rsync限速以及用法

rsync限速以及用法 2014-10-23 16:43:10 标签:限速 rsync 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xficc.blog.51cto.com/1189288/1567322 rsync是(限制为 100k Bytes/s): #rsync -auvzP--bwlimit=100 本地的文件远程的文件 参数说明: v:详细提示 a:以archive模式操作,复制目录.符号连接,等价于 -rlp

linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)

因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp,wget,curl. rcp rcp不是一种安全的的传输文件的方式,rcp通过rsh(rsh见下面)来执行远程命令,要使用rcp必须经过一些配置,现在rcp已经被scp取代了,常用scp来进行文件传输.要使用rcp,需要具备以下条件: (1)如果系统中有/etc/hosts 文件,应确保该文件包含要