linux基础命令_rysnc远程复制

蛋蛋 2023年04月26日 19 0

转自:https://linux.cn/article-4503-1.html
https://www.cnblogs.com/f-ck-need-u/p/7221713.html


简介

Rsync是一个快速且功能非常丰富的文件拷贝工具。它可以在本地和远程之间通过shell或rsync服务互相拷贝文件。
它以其增量拷贝算法而出名,只拷贝源和目标不同的文件部分,因此减少网络间要传输的数据。Rsync每天都被广泛用于做备份镜像和当作升级版拷贝命令。
Rsync使用"quick check"算法(默认)决定文件是否需要被传输,它会找出大小或**最后修改时间(mtime)**不同的文件。当"quick check"算法表明了文件不需要被更新时,任何其他保留属性(译者注:除大小和最后修改时间外的属性)都将直接在目标文件上修改。

Rsync同样是一个在类Unix和Window系统上通过网络在系统间同步文件夹和文件的网络协议。Rsync可以复制或者显示目录并复制文件。Rsync默认监听TCP 873端口,通过远程shell如rsh和ssh复制文件。Rsync必须在远程和本地系统上都安装。

rsync的主要好处是:

  • 速度:最初会在本地和远程之间拷贝所有内容。下次,只会传输发生改变的块或者字节。
  • 安全:传输可以通过ssh协议加密数据。
  • 低带宽:rsync可以在两端压缩和解压数据块。

特性

  • 支持拷贝链接文件、设备文件、所有权(即所有者和所属组)、属组以及权限
  • 支持类似于GNU tar命令的exclude和exclude-from选项,支持过滤不同步
  • 支持CVS排除模式以忽略相同的文件(译者注:CVS是一种版本控制系统)
  • 可以使用任意透明的远程shell(remote shell),包括ssh或rsh
  • 不要求超级管理员权限
  • 以pipeline管道模型传输文件以便最小化降低成本
  • 支持匿名或可身份认证的rsync daemon模式(做镜像的理想方式)

语法:

rsysnc [options] source path destination path

示例

cp

同步/mnt/cdrom/下的文件到ISO/路径下,除了Packages和repodata文件夹

/usr/bin/rsync -a --exclude=Packages/ --exclude=repodata/ /mnt/cdrom2/ /cache2/ISO

启用压缩

[root@localhost /]# rsync -zvr /home/aloft/ /backuphomedir
building file list ... done
bash_logout
bash_profile
bashrc
sent 472 bytes received 86 bytes 1116.00 bytes/sec
total size is 324 speedup is 0.58

上面的rsync命令使用了-z来启用压缩,-v是可视化,-r是递归。上面在本地的/home/aloft/和/backuphomedir之间同步。

保留文件和文件夹的属性

[root@localhost /]# rsync -azvr /home/aloft/ /backuphomedir
building file list ... done
/
bash_logout
bash_profile
bashrc
 
sent 514 bytes received 92 bytes 1212.00 bytes/sec
total size is 324 speedup is 0.53

上面我们使用了-a选项,以归档(archive)模式传输,它保留了所有人和所属组、时间戳、软链接、权限,并以递归模式运行。

同步本地到远程主机

root@localhost /]# rsync -avz /home/aloft/ azmath@192.168.1.4:192.168.1.4:/share/rsysnctest/
Password:
 
building file list ... done
/
bash_logout
bash_profile
bashrc
sent 514 bytes received 92 bytes 1212.00 bytes/sec
total size is 324 speedup is 0.53

上面的命令允许你在本地和远程机器之间同步。你可以看到,在同步文件到另一个系统时提示你输入密码。在做远程同步时,你需要指定远程系统的用户名和IP或者主机名。

远程同步到本地

[root@localhost /]# rsync -avz azmath@192.168.1.4:192.168.1.4:/share/rsysnctest/ /home/aloft/
Password:
building file list ... done
/
bash_logout
bash_profile
bashrc
sent 514 bytes received 92 bytes 1212.00 bytes/sec
total size is 324 speedup is 0.53

上面的命令同步远程文件到本地。

找出文件间的不同

[root@localhost backuphomedir]# rsync -avzi /backuphomedir /home/aloft/
building file list ... done
cd+++++++ backuphomedir/
>f+++++++ backuphomedir/.bash_logout
>f+++++++ backuphomedir/.bash_profile
>f+++++++ backuphomedir/.bashrc
>f+++++++ backuphomedir/abc
>f+++++++ backuphomedir/xyz
 
sent 650 bytes received 136 bytes 1572.00 bytes/sec
total size is 324 speedup is 0.41

备份

rsync命令可以用来备份linux。
你可以在cron中使用rsync安排备份。

0 0 * * * /usr/local/sbin/bkpscript &> /dev/null
vi /usr/local/sbin/bkpscript
 
rsync -avz -e ‘ssh -p2093′ /home/test/ root@192.168.1.150:/oracle/data/

文件包含空格

如果你要传输一个文件名中包含了空白字符的文件,可以使用"--protect-args"("-s")选项,也可以使用转义符将空白字符转义。例如:

rsync -av host:'file\ name\ with\ spaces' /dest
Last Updated: 2023/04/26 11:09:38
Linux基础_统计行数 messages日志