linux查看rsync的命令,Linux rsync 命令学习

Rsync命令和cp命令很像,但是功能似乎更加复杂点,主要用来备份数据。看了网上一堆介绍的文章,感觉不是很通俗易懂。下面按照我的理解,做一些笔记:

同步方式

之前接触过一些同步软件,例如坚果云、百度云盘等等,他们对于同步方式都是有一些选择项的,下面列举一些同步方式

单向同步

每次执行任务时,源目录中新建和更新的文件将被复制到目标目录中;目标目录中对应源目录中已经删除的文件,将被删除。此方式只是单向地对文件进行从源目录到目标目录的操作。如果您手工对目标目录进行的任何文件操作,将被任务忽略。

双向同步

每次执行任务时,不管源目录还是目标目录中新建和更新的文件都会被复制到另外一个目录中;在任何一个目录中删除文件,另外一个目录也会删除对应的文件。当两个目录中文件的操作重叠时,任务会自动保留最新的操作。如果操作时间无法判断,更新和新建文件的操作会优于删除文件而被保留。此方式会对源目录进行文件操作。

镜像同步

每次执行任务时,任何在源目录中新建或在目标目录中删除或在两个目录中更新的文件,都会从源目录复制到目标目录。任何在源目录中删除或在目标目录中新建的文件都会从目标目录中删除。此方式始终保持目标目录中的文件和源目录中的文件一模一样,任何目标目录自身的文件变化将被去除。此方式会删除目标目录中多余的文件。

移动同步

每次执行任务时,源目录中的任何文件都会被移动到目标目录中去。目标目录中如果存在相同文件将被覆盖。移动后,源目录被清空。

更新同步

每次执行任务时,源目录中新建和更新的文件将被复制到目标目录中,目标目录中任务之前复制的所有文件将被删除,只保留最新的文件。

累加同步

每次执行任务时,源目录中新建和更新的文件将被复制到目标目录中,目标目录中的任何文件都不会被删除。目标目录中会保留所有在源目录中曾经出现过的文件且都是最后一个版本。

增量备份

每次执行任务时,任务发现源目录中有新建或更新的文件,则在目标目录中建立一个子目录来保存这些新文件。虽然保存的文件只反映了执行时源目录的一部分,但您可以利用软件中提供的文件恢复工具来恢复出执行时源目录完整的目录结构和所有文件。增量备份任务第一次执行时,会自动对源目录做一次完全备份,以便以后能完全恢复。

完全备份

每次执行任务时,任务会在目标目录中建立一个子目录来保存源目录中的所有文件。

除双向同步和镜像同步外,其它方式的任务在执行时,如果发现源目录中的文件没有发生变化,将不做任何处理,只会记录一个最后检查时间。双向同步和镜像同步如果碰到源目录和目标目录中的文件都没有变化的情况,也将只记录一个最后检查时间。

除双向同步和镜像同步外,其它方式的任务对于用户直接对目标目录进行新建、更新、删除的文件不做处理。也就是说,不是任务复制到目标目录而存在的文件,任务认为它不存在,不是被任务删除的文件,任务认为文件还在目标目录中存在。

除双向同步和移动同步外,其它方式的任务不会对源目录进行文件操作。

Rsync的命令格式可以为以下六种:

rsync [OPTION]... SRC DEST

rsync [OPTION]... SRC [USER@]HOST:DEST

rsync [OPTION]... [USER@]HOST:SRC DEST

rsync [OPTION]... [USER@]HOST::SRC DEST

rsync [OPTION]... SRC [USER@]HOST::DEST

rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

rsync 参数理解

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。

-e, --rsh=command 指定使用rsh、ssh方式进行数据同步。

-r, --recursive 对子目录以递归模式处理。

-l,--links保留软链结。

-L, --copy-links 想对待常规文件一样处理软链结。

-K, --keep-dirlinks treat symlinked dir on receiver as dir

-v, --verbose 详细模式输出。

-z, --compress 对备份的文件在传输时进行压缩处理。

--deldete

–delete:如果源端没有此文件,那么目的端也别想拥有,删除之。(如果你使用这个选项,就必须搭配-r 选项一起)

--delete 删除那些 DST 中 SRC 没有的文件,就是说,DST 中如果存在和 SRC 不一样的文件,那么这些文件就会在同步过程中删除!这种同步方式是不是有点像镜像同步。

为了搞清楚目录加/的区别,做了如下的对比:

目的:将源目录test传输到远程目录/tmp下,即远程目录下/tmp/test

1.源目录加斜线,目标目录不加斜线:

结果显示,加了斜线,会将源目录下的文件,传输到目标目录下。

如果目标目录不存在,会创建目录。

rsync -avlK ./test/ root@10.22.44.103:/tmp/test

root@10.22.44.103's password:

sending incremental file list

created directory /tmp/test

./

a.txt

b.py

dd/

sent 208 bytes received 97 bytes 55.45 bytes/sec

total size is 0 speedup is 0.00

root@SZX1000395393:/tmp/test# ls

a.txt b.py dd

2.源目录不加斜线,目标目录不加斜线

不加斜线,直接将源目录复制到目标目录下,所以,test整个目录复制到了目标目录下了。

root at node1 in /tmp

$ rsync -avlK ./test root@10.22.44.103:/tmp/test

root@10.22.44.103's password:

sending incremental file list

created directory /tmp/test

test/

test/a.txt

test/b.py

test/dd/

sent 219 bytes received 98 bytes 57.64 bytes/sec

total size is 0 speedup is 0.00

root@SZX1000395393:/tmp# cd test/

root@SZX1000395393:/tmp/test# ls

test

root@SZX1000395393:/tmp/test# cd test

root@SZX1000395393:/tmp/test/test# ls

a.txt b.py dd

3. 源目录不加斜线,目标目录加斜线:

不加斜线,直接将源目录复制到目标目录下,所以,test整个目录复制到了目标目录下了。

$ rsync -avlK ./test root@10.22.44.103:/tmp/test/

root@10.22.44.103's password:

sending incremental file list

created directory /tmp/test

test/

test/a.txt

test/b.py

test/dd/

sent 219 bytes received 98 bytes 70.44 bytes/sec

total size is 0 speedup is 0.00

root@SZX1000395393:/tmp# cd test/

root@SZX1000395393:/tmp/test# ls

test

4. 源目录加斜线,目标目录加斜线:

结果显示,加了斜线,会将源目录下的文件,传输到目标目录下。

$ rsync -avlK ./test/ root@10.22.44.103:/tmp/test/

root@10.22.44.103's password:

sending incremental file list

created directory /tmp/test

./

a.txt

b.py

dd/

sent 208 bytes received 97 bytes 55.45 bytes/sec

total size is 0 speedup is 0.00

root@SZX1000395393:/tmp/test# ls

a.txt b.py dd

总结

源目录加了斜线,效果就是将该目录下的内容传输到目标目录下。

源目录不加斜线,效果就是将该目录传输到目标目录下。

目标目录如果不存在,会自动创建目标目录。

所以,为了实现最初的目的,可以通过:

$ rsync -avlK ./test/ root@10.22.44.103:/tmp/test

或者:

$ rsync -avlK ./test root@10.22.44.103:/tmp

-a 选项

-a 选项是rsync里比较霸道的一个选项,因为你使用-a选项,就相当于使用了 -rlptgoD 这一坨选项。以一敌七,唯 -a选项也。(在看了前文之后,你应该可以很轻松的理解这七个选项的作用了)

-a 选项的学名应该叫做archive option,中文叫做归档选项。使用-a` 选项,就表明你希望采取递归方式来同步,且尽可能的保持各个方面的一致性。

但是 -a选项也有阿克琉斯之踵,那就是-a无法同步“硬链接”情况。如果有这方面需求,要加上-H选项

实例

加不加 / 的区别

末尾不加/,表示的是将src这个目录直接复制到文件夹下,如果dst目录下没有src,会自动创建src目录

$ rsync -avzh --progress /apkg/backup/src /apkg/backup/dst

末尾加/,表示的是将src目录下的内容复制到dst2文件夹下

$ rsync -avzh --progress /apkg/backup/src/ /apkg/backup/dst2

同步时,创建目录

将本地机器上/data/repo/Log/中的内容,归档到远程机器上的/data/repo/Log/{repo}/目录中,{repo} 这个目录远程不一定有,需要创建:

rsync -avzh --progress --rsync-path="mkdir -p /data/repo/Log/{repo} && rsync " /tmp/{repo}/{repo}/log/ root@xxx.xxx.xxx.xxx:/data/repo/Log/{repo}/

参考

rsync -aL

示例:

一次传输多个文件到目标文件夹下

rsync -aL /apkg/FusionSwift/package_pool/DLRN_RPMS/current/cps-swift.noarch.rpm /apkg/FusionSwift/package_pool/DLRN_RPMS/current/cps-swift-proxy.noarch.rpm /apkg/FusionSwift/rpm_srv/euleros/2.0/noarch/

-e

示例:

rsync -avzKq --stats -e "ssh -i /usr/lib/python2.7/site-packages/apkg/actions/pool/id_rsa -o StrictHostKeyChecking=no" cps-pkg-pool-2.xxx.com:/data/cps/repo/FusionSwift/master/xxx/euler

## 参考

- [《rsync同步的艺术》–linux命令五分钟系列之四十二](http://roclinux.cn/?p=2643) 推荐,详细叙述了各选项的意义

- [RSYNC 的核心算法](https://coolshell.cn/articles/7425.html)

- [Linux命令中:rsync和cp之间的区别](https://www.cnblogs.com/kex1n/p/7008178.html)

- [使用 rsync 增量同步备份文件 ](http://einverne.github.io/post/2017/07/rsync-introduction.html)

- [Rsync命令详解](http://blog.csdn.net/u010391029/article/details/51746641)

- [第2章 rsync(一):基本命令和用法](https://www.cnblogs.com/f-ck-need-u/p/7220009.html#blog243)

- [Rsync(远程同步):10 Linux中Rsync命令的实际示例](https://www.howtoing.com/rsync-local-remote-file-synchronization-commands)

- [FileGee的8种同步和备份方式](http://www.sohu.com/a/121958339_365148)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux远程挽救模式,linux – 如何在远程重启Redhat后进入SSH并进入恢复模式?

我需要进入我的红帽框的恢复模式,该模式在虚拟机上远程运行.我使用RedHat 5 64位企业版.我使用SSH登录到该框.我可以使用restart命令重新启动,但我需要知道我是否能够通过SSH连接它,因为我远程使用它并且无法通过UI登录.真正的问题是,我在根目录上做了一个-R $USER /.我试图将此…

mac os linux 桌面快捷键,Mac之快捷键

接触Mac不久,很多东西都没了解过,对于快捷键完全不熟悉,查了些资料,顺便做下笔记~~~按键符号Shift:⇧Ctrl:⌃Alt(Option):⌥Command:⌘Mac按键符号…

linux 等待进程,Linux 进程等待队列

Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待队列…

linux 终端 朗读,使Linux终端朗读文字的小技巧分享

对于那些不能文字朗读的设备,有个小工具可以实现文字说话的转换器。用各种语言写一些东西,espeak就可以朗读给你。系统应该默认安装了Espeak,如果你的系统没有安装,你可以使用下列命令来安装:代码如下:# apt-get insta…

linux 进程崩溃 wait,Linux信号机制有关问题

代码如下:#include#include#includevoid waiting(),stop();int wait_mark;main(){int p1,p2,stdout;while((p1fork())-1); /*创建子进程p1*/if (p1>0){wait_mark1;signal(SIGINT,stop); /*接收到^c信号,转stop*/waiting();kill(p1,16); /*向p1发软…

linux启动管理,Linux启动管理 详述

一 系统运行级别如果想查看运行级别,用runlevelinit 运行级别 就可以改变系统运行级别系统默认级别,也就是开机进入哪个级别,在/etc/inittab中二 启动过程首先是BIOS加载MBR,MBR里有个扇区,里面有启动引导程序&#xf…

weblogic 10.3.0.0 for linux下载地址,weblogic10.3下载地址

Oracle WebLogic Server 10.3.1 OEPE - Package Installer 单语言版带OEPEMicrosoft Windows x86: 756 MB http://download-llnw.oracle.com/otn/nt/middleware/11g/wls/oepe11_wls1031.exeLinux x86: 773 MB http://download.oracle.com/otn/linux/…

linux vfs 根节点名称,Linux:文件,目录项,索引节点,超级块,VFS,具体文件系统...

【笔记:http://m.blog.csdn.net/blog/zhouzhou135】在了解文件系统之前,先了解磁盘格式化的知识。所以要理解文件系统的数据结构,要从两个方向来理解:1:磁盘中的数据结构:因为在磁盘格式化的时候&#xff0…

简单的eda实验vga在linux系统中,EDA实验报告-VGA彩条显示.doc

VGA彩条信号显示控制一、实验目的:1. 熟练掌握 Verilog HDL语言和QuartusII 软件的使用;2. 理解状态机的工作原理和设计方法;3. 熟悉 VGA 接口协议规范。4.通过对VGA接口的显示控制设计,理解VGA接口的时序工作原理,掌握…

c语言中陶陶摘苹果while,洛谷 P1478 陶陶摘苹果(升级版) C语言实现

题目描述又是一年秋季时,陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果,这次她有一个a公分的椅子。当他手够不着时,他会站到椅子上再试试。这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力气只剩下s了。当然&am…

c语言程序设计报告用于医院食品加工等部,南开(本部)《C语言程序设计》14春在线作业答案...

南开(本部)14春《C语言程序设计》在线作业 , W. v1 o) p. J2 n0 I试卷总分:100 测试时间:--4 v8 D, }8 e! w: D6 Y0 m一、单选题(共40道试题,共80分。)8 U: } j% ^2 T) F( q1.以下对一维整型数组 a 的正确说明是( ) C! f | }# n$ t7 g, z…

c语言中二分法100中找30,c语言中的二分法

\\\题外&#xff1a;对于printf引号中的内容一定要细心书写 ; 数组由a[0]开始计数&#xff0c;切记&#xff1b;尤其是与for循环中i1 搞混运用a[i1]等超前数据时 需先用for(i0;i<n-1;i){scanf("%d",&a[i]);}给数组全部赋值题目&#xff1a;对于方程 8*x^47*x^…

c语言 乘除法优先级,运算符运算符优先级 - C语言教程

运算符优先级运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级&#xff0c;例如&#xff0c;乘除运算符具有比加减运算符更高的优先级。例如 x 7 3 * 2&#xff0c;在这里&#xff0c;x 被赋值为 13&#xff0c;而不…

c语言long double位数,int long double 所占位数 和最大值

// // 32 // 位数 数值// int t1 pow(2, 31); // 4 2147483647// int32_t t2 pow(2, 31); // 4 2147483647// int64_t t3 pow(2, 62); // 8 4611686018427387904// NSInteger t4 pow(2, 32); // 4 2147483647// double t5 pow(2, 64); // 8 18446744073709551616.000000//…

存储器块清零c语言版,存储器块清零实验报告

有关单片机存储器块清零实验的试验报告存储器块清零实验报告班级&#xff1a; 11级计科班 姓名&#xff1a;苏靖 学号&#xff1a;1120070544 日期&#xff1a;2012-12-19一、实验目的&#xff1a;1、掌握存储器读写方法2、了解存储器的块操作方法.二、实验要求&#xff1a; 设…

C语言exchange函数,C++指针作为函数参数

函数的参数不仅可以是整型、浮点型、字符型等数据&#xff0c;还可以是指针类型。它的作用是将一个变量的地址传送给被调用函数的形参。【例6.3】题目同例6.2&#xff0c;即对输入的两个整数按大小顺序输出。这里用函数处理&#xff0c;而且用指针类型的数据作函数参数。程序如…

android自定义阴影,Android自定义边框加阴影

一、前言Android自定义边框&#xff0c;可以设置任意边框的角度和阴影。我下面分为 四个角度设置边框、两个角度设置边框、半圆球设置边框加两层阴影等。二、边框分类&#xff1a;1、四个角度设置边框效果图&#xff1a;图片.png2、两个角度设置边框android:topLeftRadius"…

linux read recv,read()/ recv()成功,但缓冲区未更改且为空

我正在编写一个客户端&#xff0c;以使用LINUX上的C脚本读取TCP下通过套接字从服务器发送回的数据。该服务器永远运行&#xff0c;我验证是否可以得到答复netcat localhost [PORT_NUMBER]。使用以下命令检查时&#xff0c;服务器处于LISTEN状态netstat -naprecv()函数返回预期的…

android 代码阅读,代码阅读器手机版-代码阅读器appv1.0 安卓版-腾牛安卓网

代码阅读器app&#xff0c;一款非常不错的手机阅读开源代码软件&#xff0c;不但能够让你们在上面选择自己喜欢的阅读代码&#xff0c;还能够选择大量的阅读主题&#xff0c;方便你们在任何时候&#xff0c;都能够获得最佳的阅读环境。代码阅读器app简介一款简单的源码阅读器的…

android点击运行后无法显示设备,Android仿真器除了黑屏外什么都不显示,adb设备显示“设备离线”...

我只是想开始在Android中进行开发。因此&#xff0c;问题是当我尝试通过发出命令emulator A2来启动仿真器时&#xff0c;屏幕上会出现一个仿真器。但是即使等待了2-3个小时&#xff0c;它所显示的只是一个黑屏。甚至没有android主屏幕或android徽标。只是黑屏。最初&#xff0…