有人可以告诉我这是什么吗?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
不会删除bkp01
,并offbk2
和发送日志offbkp01.log
?
有人可以告诉我这是什么吗?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
不会删除bkp01
,并offbk2
和发送日志offbkp01.log
?
Answers:
为了将其分为几部分,分为两个主要部分,然后是摘要和注释:
rsync
命令:rsync -uva --delete /srv/bkp01 /srv/offbk2/
rsync-command > ~/offbkp01.log
rsync
命令:rsync
-我认为这不需要任何解释(但如果需要的话会提供)。-uva
-一组单字符选项(显示的是长短形式):
-u
--update
-告诉rsync所有修改只应应用于目标上相同年龄(和不同大小)或比源文件旧的文件。也就是说,rsync应该仅传递来自源的更改,以更新目标,但不应进行任何使目标文件成为旧版本的更改。
有一些例外。类型的差异(例如,一个是文件,另一个是目录)将导致更新,而不考虑日期。符号链接和其他特殊文件将忽略此选项。而且,重要的是,这不会影响要删除的文件。
-v
--verbose
-增加了rsync在执行时打印出的信息量。没有这个,rsync将什么也不打印。保持此选项不变,rsync会告诉您正在传输哪些文件,并在末尾添加摘要。更多的v
s可增加打印的信息,尽管手册页指出v
仅在调试时才使用两个以上的信息。 -a
--archive
-这等效于-rlptgD
打包在一起的其他几个选项()。顾名思义,这是设置许多用于归档文件和目录的常用选项的快速方法。它会:-r
--recursive
-告诉rsync递归复制目录。如果没有此-d
--dirs
选项或更特殊的选项,rsync只会跳过它遇到的任何目录(并在其输出中告诉您)。 -l
--links
-当源是符号链接时,请在目标上创建符号链接。根据其他选项,符号链接可能会被跳过或制作为完整的单独副本(即,包含内容的真实目录(或文件的另一个副本)而不是符号链接)。 -p
--perms
-将目标文件的权限设置为与源文件相同。 -t
--times
-将目标文件的修改时间设置为与源文件相同。由于保持这些时间同步可使rsync算法更有效,因此通常您总是希望显式或隐式使用它。 -g
--group
-将目标的组属性设置为与源相同。默认情况下按名称关联,但在某些情况下会回退到组ID号。如果接收方 rsync没有以超级用户身份运行(或使用伪造--fake-super
),则只能设置在接收方调用rsync的用户所属的组。否则,该组将被设置为前面提到的同一用户的默认组。 -D
-等同于选项--devices
和--specials
在一起。他们的意思是:--devices
-字符和块设备文件已传输。如果接收的 rsync没有以超级用户身份运行(或使用伪造--fake-super
),则无效。 --specials
-传输特殊文件(如套接字)(否则将不会传输)。 --delete
-告诉rsync删除目标上而不是源上的文件。这不受上面设置的更新选项的影响(实际上,这是怎么回事,因为大多数文件系统将不会保留所需的数据来查看哪个操作是新的?)。此选项对通配符/全局扩展后的源起作用,因此dir / *与dir /不同。一些重要的注意事项:--dry-run
选项进行尝试,这将进行伪装的传输,使您可以确保未进行意外更改。 --ignore-errors
尽管您可能不想/不想这样做,但是可以使用该选项覆盖它。--delete-during
将使用该算法。如果接收器较旧,则--delete-before
使用。如果在发生错误时文件保持某种类型的一致性很重要(例如在进行所有其他更改之前不删除任何内容),则应使用比默认选项更具体的选项。/srv/bkp01
-源文件或目录。关于目录末尾是否有斜杠以及其他目录是否存在的含义,有一些详细的规则。有关详细信息,请参见手册页的“ 使用”部分,但是这里没有尾部的斜杠表示该目录将被复制到目标位置,而不是该目录的内容被复制到目标位置。如果这是文件而不是目录,则相同。/srv/offbk2/
-目标目录。通常,除非使用选项在命令的其他位置指定它,否则它将始终是rsync命令部分中列出的最后一项。>
-这会将stdout(标准输出)从左侧的内容重定向到右侧的文件,成为其内容,并创建文件(如果可能)(如果尚不存在)。一些注意事项:2>&1
到上述命令的末尾。顺序很重要,因此请谨慎概括该放置的位置。魔术数字1
指的是stdout,2
指的是stderr,&
(基本上)是“的地址”,完整的命令片段表示“将stderr的输出重定向到stdout流中”。 >>
改用。将stderr重定向到同一位置的方法保持不变。 1> stdout_file 2> stderr_file
。您也可以通过添加而不是替换来>>
代替>
在该命令中使用。~
-这是当前用户主目录的简写,是下一部分的一部分。~/offbkp01.log
-当前用户主目录中的文件offbkp01.log。由于使用重定向,因此将在此放置rsync命令的输出>
。总之,此命令将:
/srv/bkp01
, /srv/offbk2/bkp01
, 并且它将在以下情况下删除/srv/offbk2/
不在中/srv/bkp01
的所有内容:
/srv/offbk2/
是较新的比它的修改时间/srv/bkp01
,它不会被更新,如果这两个项目仍在同一类型(普通文件,目录或符号链接(? ))。 此外,rsync将打印出一些有关其正在执行的操作的信息(特别是正在传输的文件以及最终摘要),shell会将这些信息写入 文件 ~/offbkp01.log
。如果该日志文件尚不存在,则将重新创建它;如果该日志文件不存在,将被覆盖。
注意:--fake-super
是用于使rsync模拟超级用户活动的选项。它通过使用文件的扩展属性来存储没有更大特权就无法设置的属性来实现此目的。给定选项和特权,每个属性的实际版本设置为有意义的任何值。尽管即使您没有超级用户权限也可以方便地进行一些备份,但还应注意,与未使用rsync相比,它可能带来更大的安全风险,因为可能没有设置真实的安全属性即使备份了有关它们的信息,也可以。
资料来源:很多时间使用rsync并阅读其手册页。
从手册中:
- 删除
这告诉rsync从接收方删除无关的文件(不在发送方的文件),但仅针对正在同步的目录。您必须已经要求rsync发送整个目录(例如“ dir”或“ dir /”),而无需使用通配符来表示目录的内容(例如“ dir / *”),因为shell扩展了通配符,因此rsync会收到请求传输单个文件,而不是文件的父目录。除非使用--delete-excluded选项或将规则标记为仅与发送方匹配,否则将从传输中排除的文件也将被删除(请参阅“过滤规则”部分的“包含/排除”修饰符)。
因此,如果您不使用通配符,它将从目标中删除不属于原始目录的文件。
源目录:
1.txt
2.txt
3.txt
目标目录:
4.txt
4.txt将在rsync之后消失,而1.txt,2.txt和3.txt将位于目标位置。
关于其他事情:
uva
man rsync
不,它只会从bkp01
目录中删除无关的文件。
也:
-u
,--update
-跳过接收器上较新的文件-v
,--verbose
-增加详细程度-a
,--archive
-存档模式;等于-rlptgoD(没有-H,-A,-X)rsync -uva --delete /srv/bkp01 /srv/offbk2/
命令的输出~/offbkp01.log
使用重定向运算符(>
)发送到文件,而不是打印在终端中。如果文件不存在,将创建该文件。如果文件存在,则旧内容将被删除。
请参阅man rsync
以获取更多信息。
bkp01
。它只是从目标中删除无关的文件(即源文件中不存在的文件)。