这是命令 clsync,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
clsync - 实时同步工具,用 GNU C 编写
概要
同步 [ ... ] -- [ 同步处理程序参数 ]
商品描述
同步 执行 同步处理程序 对目录中的 FS 事件使用适当的参数
监视目录 使用 inotify的(7) 或其他FS监控子系统。
配置
此选项可以作为参数传递或在配置文件中使用。
要禁用设置为零的数字选项:
=0
要禁用设置为空字符串的字符串选项(例如文件路径):
=
您也可以在设置新选项时使用先前设置的值。 子串 %选项名称%
将替换为先前设置的选项值 OPTION_NAME。 (看到 配置
文件)
同步处理程序参数 仅适用于模式:
简单、直接、外壳、rsyncdirect、rsyncshell
设置 同步处理程序参数 在配置文件中使用“--”。 一个例子:
-- = -aH --exclude-from %EXCLUDE-LIST% --include-from=%INCLUDE-LIST% --exclude '*'
%watch-dir%/ %destination-dir%/
-W, --手表目录 监视目录
被监控的根目录 同步.
需要。
-S, --同步处理程序 同步处理程序
路径 同步处理程序 用于同步 同步。 (看到 - 模式)
除了“direct”和“rsyncdirect”之外的所有模式都需要[参见 SYNC 处理程序
模式]
-R, --规则文件 规则文件
带有要监控的对象的过滤规则的文件路径。 (看 规则)
默认情况下未设置。
-D, --目的地目录 目标目录
为模式“rsyncdirect”、“rsyncso”和“so”定义要同步到的目录。 (看
- 模式)
默认情况下未设置。
-M, - 模式 模式
设置同步模式。 可能的值:
简单
电话 同步处理程序 对于每个事件
直接
电话 同步处理程序 对于与传递文件列表的每次同步
参数
壳
电话 同步处理程序 对于每个与文件中传递文件列表的同步
同步直接
按路径调用 rsync 同步处理程序 直接
同步shell
电话 同步处理程序 应该为每个同步运行 rsync
(推荐模式)”
同步
按路径加载共享对象 同步处理程序 - 打开(3)和调用
功能 clsyncapi_rsync 每次同步的功能
so
按路径加载共享对象 同步处理程序 - 打开(3)和调用
功能 clsyncapi_sync 每次同步的功能
参见 SYNC 处理程序 模式
需要。
-b, - 背景
守护进程,在启动时强制 clsync 到 fork()。
默认情况下未设置。
-H, --配置文件 配置文件路径
使用文件中的配置 配置文件路径 (见 配置 文件).
如果不应读取配置文件,则设置为“/NULL/”。
默认情况下未设置。
-K, --配置块 配置块名称
使用带有名称的配置块 配置块名称 (见 配置 文件).
默认值为“默认”。
--config-块-继承 配置父块名称
使用带有名称的配置块 配置父块名称 作为父母
配置块名称 (见 配置 文件)。 选项来自 配置父块名称
将继承到 配置块名称.
默认值为“默认”。
--自定义信号 自定义信号
设置信号列表和相应的配置块名称。 配置块将
用于捕捉相应的信号。
格式是
信号:配置块名称[,信号:配置块名称[,...]]
例如:
--custom-signals=29:调试,28:正常
在这一行中,信号“28”和“29”将被添加到 sighhandler。 和同步
将使用信号 29 上的配置块“调试”和信号 28 上的“正常”中的选项。
要重置所有自定义信号,请使用第 0 个信号(例如“--custom-signals=0”)。
默认值为“”。
-z --pid 文件 pidfile 的路径
按路径将pid写入文件 pidfile 的路径.
默认情况下未设置。
--状态文件 状态文件路径
将状态描述写入带有路径的文件中 状态文件路径.
可能的状态:
开始
使用 FS 监视器初始化子系统和标记文件树
子系统
初始化同步
处理初始同步
运行
等待事件或同步
同步处理器 错误
在同步处理程序执行尝试之间等待(失败后)[是
仅在使用时 --线程=关闭]
重新散列
重载配置文件
绪 gc
运行线程的垃圾收集器
退出前
执行 --预退出钩子
终止
运行最后一次迭代(如果需要)并准备死亡
退出
执行 --退出挂钩 并清理 [for 瓦尔格林德(1)]
默认情况下未设置。
-r, --重试 尝试次数
尝试限制同步 同步处理程序.
同步 之后会死 尝试次数 尝试。
尝试无限设置“0”。
尝试之间的延迟等于 --延迟同步 计算值。
默认值为“1”。
--忽略失败
不要死于同步失败。
默认情况下未设置。
--同步跳过时退出
如果由于任何原因可以跳过某些事件,则退出。
例如 FreeBSD 有一个非常短的 BSM 事件队列 (1024)。 所以它可能是
溢出和一些事件无法爬到队列中。 此选项强制 同步 至
如果队列已溢出,则退出。
默认情况下未设置。
-p, --线程 线程模式
使用 VHDL 语言编写 线程(7) 并行化同步过程。 例如如果 同步 (与
--线程=关闭) 已经在同步一个巨大的文件然后所有其他同步将
暂停,直到大文件同步完成。 为了防止这种挂起,您可以使用
“安全”或“完整”线程模式。
可能的值:
折扣
为同步进程禁用线程。
安全
并行化同步但暂停已经存在的对象的同步
在另一个进程中同步(直到进程完成)。
,
并行化同步而不挂起。
特点:
折扣
在旧修改完成之前,不会同步新修改。
安全
理论上是最好的方法。 但可能会使用大量的 CPU,如果
有很多同时并行同步。 (这种方式也不是
测试良好)
,
可能会导致同一文件的多个同时同步,这在
转动会导致内部错误 同步处理程序 (见下文)。
如果您正在跑步 同步 带选项 --线程=满 和这个结合 rsync的
带选项 --备份, 由于 rsync 文件的非原子性,您可能会发现错误
更换操作。 (看 诊断)
默认值为“关闭”。
-Y, - 输出 日志目的地
设置日志写入目标(错误、警告、信息和调试)。
可能的值:
斯特德
标准输出
系统日志
默认值为“stderr”。
--一个文件系统
不要跟随不同设备的挂载点。 此选项只是添加选项
“FTS_XDEV”为 fts_open(3) 功能。
警告! 如果您使用此选项(但没有 --exclude-mount-points) 同步 将
write 既不包括也不排除挂载点的内容。
这可能会导致问题,例如您使用 rsync 进行同步处理程序而没有类似的
选项“--一个文件系统”。
默认情况下未设置。
-X, --排除挂载点
部队 --一个文件系统 还要添加 excludes 以不同步挂载点。
这需要做 统计(2) 每个目录上的系统调用会降低性能。
默认情况下未设置。
- 插座 套接字路径
按路径创建控制套接字 套接字路径.
这是非常实验性的功能。
默认情况下未设置。
--socket-拥有 套接字所有者用户[:套接字所有者组]
设置控制套接字所有者用户(和组)。
默认不设置
--socket-mod 套接字模式
设置控制套接字模式 [参见 CHMOD(2)]。
默认情况下未设置。
--备用文件 备用文件路径
将文件设置为每次同步前应检查的路径。 如果文件存在同步
将被挂起,直到文件被删除。 如果您需要冻结,它可能会很有用
运行一些脚本时的目标目录。
默认情况下未设置。
--最大迭代次数 迭代次数
设置同步迭代限制。 一次迭代意味着一个同步处理程序
执行。
迭代次数
设置为 0 表示没有限制(无限循环)。
设置为 1 意味着只会进行初始同步
设置为 n 意味着只有初始同步和之后的 (n-1) 个同步
完成
提示:此选项可能与 --exit-on-no-events 结合使用以防止
无限同步进程。
默认值为“0”。
--修改签名 签名掩码
设置文件/目录修改重新检查签名。 如果文件没有被修改(根据
签名)然后不同步它。
参见 结构 统计 in 统计(2) 对于可能的字段。
例如合理 签名掩码-s 可以
“dev,ino,mode,uid,gid,rdev,size,atime,mtime,ctime”(有一个别名——
"*") 或 "uid,gid"。
用例示例:
chown/chmod
如果您使用 clsync 来修复文件/目录权限 [使用 乔恩(1)
和 CHMOD(1)] 比合理的签名将是“uid,gid”。
完整示例:clsync -w5 -t5 -T5 -x1 -W
/var/www/site.example.org/root -Mdirect -Schown --uid 0 --gid 0
-Ysyslog -b1 --修改签名 uid,gid -- --from=root
www 数据:www 数据 %INCLUDE-LIST%
双向的 同步
如果您要设置双向同步,则可以使用
--modification-signature "*" 以防止服务器之间的同步循环。
不 更多 中央处理器
如果 rsync 在重新检查其上的文件的哈希和时占用了太多 CPU
由于一些hacky脚本(例如“chown -R
www-data:www-data" in cron) 然后你可以使用 --modification-signature
"dev,ino,mode,uid,gid,rdev,size,atime,mtime" (没有 "blksize",
“块”、“nlink”和“ctime”)。
警告! 本篇 选项 五月 吃 a 很多 of 记忆 on 巨大 文件 树木。
此选项不能与“--cancel-syscalls=mon_stat”一起使用
要禁用文件/目录修改重新检查,请使用空值 — ""。
默认值为“”。
-k, --超时同步 同步超时
设置同步进程的超时时间。 同步 如果同步过程更活跃,将会死
比 同步超时 秒。
设置“0”以禁用超时。
默认值为“86400”[“24 小时”]。
-w, --延迟同步 附加延迟
设置同步之间的最小延迟(以秒为单位)。
默认值为“30”。
-t, --延迟收集 普通延迟
设置延迟(以秒为单位)以收集有关普通文件和目录的事件。
默认值为“30”。
-T, --延迟收集大文件 大文件延迟
设置延迟(以秒为单位)以收集有关“大文件”的事件(请参阅
--阈值-大文件).
默认值为“1800”。
-B, --阈值-大文件 文件大小阈值
设置将普通文件与“大文件”分开的文件大小阈值(以字节为单位)。
关于“大文件”的事件在另一个队列中处理,单独收集
延迟。 这应该用作卸载 IO 资源的一种方式。
要禁用“大文件”的检测,请设置“0”(零)。 这可以通过以下方式提高性能
消除额外 lstat() 系统调用中的必要性。
默认值为“134217728”[“128 MiB”]。
--取消系统调用 系统调用掩码
设置要绕过的系统调用。 这可用于挤压更多性能。
可能的值:
mon_stat
在处理文件/目录事件时跳过 lstat() 调用。 这使得
无法确定文件大小(由
--阈值-大文件 选项)并使用选项
--修改签名.
您可以使用逗号组合这些值。
要禁用此选项,只需使用空值 — ""。
默认值为“”。
-L, --lists-目录 tmpdir-路径
设置目录路径以输出临时事件列表文件。
参见 SYNC 处理程序 模式.
默认情况下未设置。
--递归同步
对刚刚创建的目录使用“recursivesync”操作而不是“synclist”
标记(见 SYNC 处理程序 模式 案件 壳).
默认情况下未设置。
--synclist-简化
删除操作“synclist”的列表文件中的前 3 个参数(参见 SYNC 处理程序
模式 案件 壳).
默认情况下未设置。
--rsync-inclimit rsync-包括行限制
按路径设置文件中行数的软限制 rsync 列表路径。 不幸,
rsync 在处理巨大的“--include-from”文件时工作非常缓慢。 所以, 同步 分裂那
列出大约 rsync-包括行限制 每个列表的行如果太大,
并由每个列表部分的一个 rsync 实例执行。 使用值“0”禁用
限制。
默认值为“20000”。
--rsync-首选包含
部队 同步 更喜欢“大量包含”方法而不是“排除+包含”
用于递归同步的 rsync。
查看案例 同步shell, 同步直接 和 同步 of SYNC 处理程序 模式.
不推荐使用此选项。
默认情况下未设置。
-X, --忽略退出代码 退出码
部队 同步 不处理退出代码 退出码 of 同步处理程序 作为错误。 你
可以通过多次传递此选项来设置多个忽略。
rsync case 的推荐值为“24”。 您可以使用列表设置多个值
许多“-x”选项(例如“-x 23 -x 24”)或通过逗号(例如“-x 23,24”)。 下降
该列表使用零退出代码(例如“-x 0”)。 例如,您可以使用“-x 0,23”来删除
列表并设置“23”-th exitcode 被忽略。
默认情况下未设置(或同样设置为“0”)。
-U, --不要取消链接列表
之后不要删除列表文件 同步处理程序 已经完成。
这可用于调试目的。
默认情况下未设置。
--fts-实验优化
启用实验性功能以在使用时优化文件树扫描 英尺(3)。
经过适当的测试后,这些功能将默认启用。
目前该选项没有任何作用,但可以在将来使用。
默认情况下未设置。
-F, --完全初始同步
忽略来自的过滤规则 规则文件 在初始同步。
这对于快速启动或例如需要同步“/ var / log /"
树,但不会从那里同步每个更改。
默认情况下未设置。
--仅初始同步
在 clsync 启动时初始同步后退出。
默认情况下未设置。
--无事件时退出
如果没有事件退出。 像 --仅初始同步, 但也同步事件
在初始同步时收集。
不比 --仅初始同步 此选项使用 FS 监控子系统来监控新的
初始同步时的事件。 这可能会降低性能。 另一方面
这种方式可以用来确保一切都在之前同步
clsync 将退出。
默认情况下未设置。
--跳过初始同步
在 clsync 启动时跳过初始同步。
默认情况下未设置。
--退出挂钩 退出钩子程序的路径
设置要在 clsync 退出时执行的程序路径。
如果设置了此参数,则 clsync 将在退出时执行:
退出钩子程序的路径 标签
如果初始同步未完成,将跳过执行。
默认情况下未设置。
--预退出钩子 退出前钩子程序的路径
设置要在最后一次同步迭代之前执行的程序路径(请参阅
--最大迭代次数, --无事件时退出 和 讯号).
如果设置了此参数,则 clsync 将在退出时执行:
退出前钩子程序的路径 标签
如果初始同步未完成,将跳过执行。
If 同步 完成由于 --无事件时退出 和 --预退出钩子 设置然后
将执行 pre-exit hook 并触发额外的同步迭代。
默认情况下未设置。
-v, --详细
这个选项应该会增加冗长。 但目前没有
代码中的“详细输出”,因此该选项不执行任何操作。 :)
默认情况下未设置。
-d, -调试
增加调试输出。 这可能会多次提供以进行更多调试
信息,最多五个“d”标志(更多将无济于事),例如
“-d -d -d -d -d”或“-d5”(等价情况)
默认情况下未设置。
--转储目录
通过信号 29 写入 clsync 的实例信息的目录(请参阅 讯号)。 该
转储前目录不应该存在。
默认设置为“/tmp/clsync-dump-%label%”。
-q, - 安静的
抑制错误消息。
默认情况下未设置。
- 监视器 监控子系统
切换 FS 监视器子系统。
可能的值:
inotify的
inotify的(7) [Linux, (FreeBSD 通过 libinotify)]
原生、快速、可靠且经过良好测试的 Linux FS 监控子系统。
使用“inotify”而不是使用“inotify”没有必要的性能利润
在 FreeBSD 上使用“libinotify”的“kevent”。 它后端到“kevent”
反正。
FreeBSD 用户:FreeBSD 上的 libinotify 还没有准备好
不能用于 同步 同步大量文件和目录。
吉奥
使用 VHDL 语言编写 吉奥 图书馆。
跨平台和经过测试的库,后端到 FreeBSD 上的 kqueue
和 inotify 在 Linux 上。 看 inotify的 和 队列 这里的部分
细节。
不 好 经过测试。 使用 VHDL 语言编写 - 警告!
队列
队列(2) [FreeBSD, (Linux 通过 libkqueue)]
*BSD 内核事件通知机制(包括定时器、套接字、
文件等)。
此监视器子系统无法确定文件创建事件,但它
可以确定发生某些事情的目录。 所以 同步 有
每次在任何内容更改时重新扫描整个目录。 而且,
kqueue 需要在每个监视的文件/目录上使用 open()。 但是 FreeBSD
不允许 open() 符号链接本身(不跟随),它是
高度侵入性地打开()管道和设备。 所以 同步 只是不会
对除常规文件和目录之外的所有内容调用 open()。
所以, 同步 无法确定是否发生了变化
符号链接/管道/套接字等。 但是它仍然可以确定它是否
将通过观察父目录来创建或删除
在每个适当的事件上重新扫描它。
此外,此 API 需要打开每个受监控的文件和目录。 所以
它可能会产生大量的文件描述符。 请确保
内核.maxfiles 足够大(在 FreeBSD 中)。
CPU/HDD 昂贵的方式。
不 好 经过测试。 使用 VHDL 语言编写 - 警告!
Linux 用户:Linux 上的 libkqueue 不起作用。 呵呵 :)
学士
学士(3) [FreeBSD]
基本安全模块 (BSM) 审计 API。
实际上,这不是 FS 监视器子系统。 这只是一个 API
访问审计信息(包括日志)。 同步 可以设置审计
观察 FS 事件并将其报告到日志中。 在那之后 同步 只会
通过解析日志 审计管(4) [FreeBSD]。
可靠,但hacky的方式。 它需要全局审计重新配置
这可能会妨碍审计分析。
警告! FreeBSD 对排队事件有限制。 在默认的 FreeBSD 中
内核只有 1024 个事件。 所以选择 一种 作者:
- 修补内核以增加限制。
- 不要使用 同步 在文件事件过多的系统上。
- 使用 bsm_预取 模式(但在这种情况下不能保证
反正)。
另见选项 --同步跳过时退出.
不 好 经过测试。 使用 VHDL 语言编写 - 警告! 还有档案
/etc/security/audit_control 将被覆盖:
#clsync
目录:/var/审计
标志:fc、fd、fw、fm、cl
最小自由:0
naflags:fc,fd,fw,fm,cl
政策:cnt
文件z:1M
除非它已经以“#clsync\n”开头(“\n”是一个新行
特点)。
bsm_预取
与...相同 学士 但所有 BSM 事件都将由
附加线程以防止 BSM 队列溢出。 这可能会利用一个
具有高 FS 事件频率的系统上的大量内存。
但是线程可能不够快,无法卸载内核 BSM
队列。 所以无论如何它可能会溢出。
Linux 上的默认值是“inotify”。 FreeBSD 上的默认值是“kqueue”。
-l, - 标签 标签
为这个 clsync 实例设置一个标签。 这 标签 将传递给 同步处理程序
每一次执行。
默认值为“无标签”。
-H, - 帮帮我
输出选项列表并以退出代码“0”退出。
默认情况下未设置。
-V, - 版
输出 clsync 版本并以退出代码“0”退出。
默认情况下未设置。
--cgroup-组名 cg-组名
设置 cgroup 组名 [见 cgroup_新_cgroup()]。
默认设置为“clsync/%PID%”。
保安 配置
--安全分裂
暗示“--splitting=process --check-execvp-arguments --seccomp-filter
--禁止设备”
-你, --uid 的uid
删除用户对 uid 的权限 的uid - Setuid(2)
如果有 能力(7) 支持则默认值为“nobody”(或“65534”)
如果没有找到“nobody”),否则默认不设置该选项;
-G, --gid GID
删除组权限到 gid GID - 塞吉德(2)
如果有 能力(7) 支持则默认值为“nogroup”(或
“65534”如果没有找到“nogroup”),否则默认不设置该选项;
--特权-uid 同步处理程序 uid
用于特权进程的用户 ID(请参阅 --splitting=进程).
默认值为“$UID”。
--特权-gid 同步处理程序-gid
用于特权进程的组 ID(请参阅 --splitting=进程).
默认值为“$GID”。
--sync-handler-uid 同步处理程序 uid
要用于的用户 ID 同步处理程序.
参见 --保留能力.
默认值与 --特权-uid.
--sync-handler-gid 同步处理程序-gid
用于的组 ID 同步处理程序.
参见 --保留能力.
默认值与 --特权-gid.
-C, --保留能力 能力列表
[Linux 只要, 需要 能力]
使用 VHDL 语言编写 外壳(2)和 预控(2) 保留“CAP_DAC_READ_SEARCH”、“CAP_SETUID”或/和
"CAP_SETGID" [见 能力(7)] Linux 进程使用能力 英尺(3)
inotify的(7)和 执行(2). 这允许保留足够的 FS 权限
观察文件树并执行 同步处理程序 使用所需的 uid 和 gid [参见
--sync-handler-uid 和 --sync-handler-gid] 删除权限后 Setuid(2)
和 塞吉德(2) [见 --uid 和 --gid]
可能的值:
CAP_DAC_READ_SEARCH
绕过 FS 读取检查(对于 英尺 和 inotify的).
CAP_SETUID
能够使用 Setuid(2) 之前 执行(2) 在 同步处理程序.
CAP_SETGID
能够使用 塞吉德(2) 之前 执行(2) 在 同步处理程序.
CAP_KILL
能够杀死 setuid()-ed 进程
还支持此值的任何组合。 名单可能是
表示为逗号分隔值,例如:
CAP_DAC_READ_SEARCH、CAP_SETUID、CAP_SETGID
默认值为“CAP_DAC_READ_SEARCH,CAP_SETUID,CAP_SETGID,CAP_KILL”,如果
同步 跑步者有这样的特权。
--继承能力
[Linux 只要, 需要 能力]
设置能力继承模式。
可能的值:
允许
继承所有允许的功能
不要碰
不要更改可继承的功能集
同步
使用 VHDL 语言编写 同步的有效能力集
空的
重置所有功能
默认值为“空”。
--分裂 分体式
将进程/线程拆分为特权和非特权。 这是另一种方式
保护您的系统免受任何错误 同步 在使用功能运行它时或
根权限。 但 同步 可能会多使用几倍的 CPU 资源。 所以这是一个
性能与安全的权衡。
您可以通过使用“高负载锁”来减少开销
(“./configure”文件的“--enable-highload-locks”)。
如果您正在使用此选项并运行 同步处理程序 与 root 用户然后
强烈建议启用 --check-execvp-参数, 也。 否则万一
of 同步 黑客将能够使用带有任何参数的 execvp() 的安全漏洞
具有root特权。
可能的值:
折扣
禁用此功能
绪
[Linux 只要, 需要 能力]
为特权操作创建一个单独的线程。
强烈建议启用 --seccomp-过滤器 在这种情况下。 但
那将禁止 --线程.
过程
更安全和便携的方式,但使用单独的进程和:
- 禁止 fanotify(无论如何还没有实现);
- 更复杂的代码(和更高的错误概率)。
- 由于在私有和共享内存之间复制数据而变慢
页面。
推荐的。
默认设置为“关闭”。
--check-execvp-参数
[需要 --splitting=[线程|进程]]
[块 --模式=直接]
在特权进程中启用 execvp() 参数重新检查(如果它们
替换任何漏洞利用给定的参数)。
此选项不占用大量 CPU 资源,但禁止运行时更改
同步处理程序参数 和钩子文件路径。
此选项不能与 - 模式=直接由于任意
此模式下的参数数量。
默认情况下未设置。
--添加允许的挂钩文件 [钩路径0,[钩路径1 [,...]]]
[需要 --check-execvp-参数]
将路径添加到允许绕过的钩子路径列表中 --check-execvp-参数
检查。 如果您要在运行时更改挂钩,则可能需要使用
--自定义信号 or - 插座.
默认情况下未设置。
--seccomp-过滤器
[Linux 只有]
使用 VHDL 语言编写 赛康 过滤器以禁止 clsync 不应使用的系统调用。
禁止非特权进程/线程的所有系统调用,但
futex inotify_init1 警报 stat fstat lstat 打开写入关闭 wait4 取消链接
tgkill clock_gettime rt_sigreturn brk mmap munmap wait4 rmdir exit_group
选择读取 rt_sigprocmask rt_sigaction nanosleep
默认情况下未设置。
--允许-mprotect
[需要 --seccomp-过滤器]
许可证 保护(2) 系统调用。
这个系统调用是由 线程创建(3),所以需要 --线程.
使 --shm-mprotect 无用。
它还能够将特权线程的内存从非特权更改,
所以使用 --splitting=线程 使用此选项也无用。
如果设置了 --splitting,则默认设置为“0”。 否则为“1”。
--shm-mprotect
[需要 --splitting=进程]
禁止在不应该的情况下写入或读取共享内存。 保护(2)
用于保护。
此选项无用,而 --允许-mprotect 启用。
--chroot chroot 目录
clsync chroot()-s [见 chroot(2)]到目录 chroot 目录 在任何同步之前
流程。
此选项可与 --uid, --gid 和/或 --枢轴根
安全原因。
记住! 如果你在某个地方 chroot()-ing, 同步处理程序 将受到限制
chroot 环境也是如此。 如果您使用的是 rsync,那么您可能需要“mount --bind”
一些目录到 chroot 目录.
默认情况下未设置。
--枢轴根 枢轴根方式
[Linux 只要, 需要 --chroot]
设置使用方式 枢轴根(2) 系统调用 chroot 目录 (至 卸除(2) 旧的
根文件)。
可能的值:
汽车
创建目录“/dev/shm/clsync-rootfs”, 取消分享(2)-ing
挂载命名空间, 安装(2)-s chroot 目录 到目录和
然后 枢轴根(2)-ing, chroot(2)-ing 和 卸除(2)-ing 旧的 rootfs。
目录“/dev/shm/clsync-rootfs”不会被删除 同步
完。
自动滚装
与...相同 汽车 但使用只读选项挂载目录
(MS_RDONLY)。
直接
取消分享(2)-ing 挂载命名空间, 枢轴根(2)-ing, chroot(2)-ing
和 卸除(2)-ing 旧的 rootfs。 应创建目录“old_root”
in chroot 目录 跑步前 同步 在这种模式下。
折扣
别 枢轴根(2)。
默认值为“关闭”。 如果 --chroot 使用然后推荐值是
“自动滚装”。
--挂载点 [挂载点[,挂载点[,挂载点]]]
[Linux 只有]
卸载(使用 MNT_DETACH)除了列出的挂载点之外的所有内容。
出于安全原因,应该用作替代 --枢轴根 选项。
默认情况下未设置。
--分离网络 分离网络模式
[Linux 只有]
删除网络 同步 实例。
可能的值:
到处
删除所有进程的网络。
非特权
如果选项,从非特权进程中删除网络
--进程拆分 已启用,否则不执行任何操作。
折扣
不要做任何事情。
默认值为“非特权”。
--分离-ipc
[Linux 只有]
创建自己的 IPC 命名空间。
默认设置。
--分离杂项
[Linux 只有]
取消分享(2) 上面未列出的所有内容。
默认情况下未设置。
--禁止设备
[Linux 只有]
禁止访问除所列设备以外的所有设备:
读取权限:
/开发/控制台
/开发/零
/开发/ urandom
/ dev /随机
写访问:
/开发/控制台
的/ dev / null的
默认情况下未设置。
性能
提高性能的建议:
- 禁用线程/进程拆分。
- 不要使用 clsync 规则(在同步处理程序端使用规则)或/和使用选项
“--full-initialsync”
- 使用选项“-B0”。
- 使用选项“--cancel-syscalls=mon_stat”。
- 使用选项“-p safe”或“-p full”。
- 使用“-d0”禁用调试或更好地禁用调试支持
"./configure" 选项 "--enable-debug=no"
- 不要使用选项“--exclude-mount-points”
- 用于磁盘缓存的可用内存
你不应该盲目地遵循所有这些建议。 你应该只使用那些想法
修复您的特定用例中的性能问题。 并且仅在必要时。
SYNC 处理程序 模式
同步 执行 同步处理程序 应该负责实际的同步过程。
因此 同步 只是一种运行同步脚本的便捷方式。
同步 能跑 同步处理程序 七种方式。 使用哪种方式取决于指定的
模式(见 - 模式)
同步处理程序参数 仅用于模式:
简单
直接
壳
同步直接
同步shell
If 同步处理程序参数 未设置则使用默认设置(见下文)。
案件 简单
为每个同步文件/目录执行:
同步处理程序 同步处理程序参数
默认 同步处理程序参数 是:
同步 %标签% %事件掩码% %包含列表%
在这种情况下, 同步处理程序 应该通过以下方式非递归地同步文件或目录
径 %包含列表%。 同 %事件掩码% 它通过文件传递了事件的位掩码
或目录(参见“/usr/include/linux/inotify.h”)。
额外的替换:
%事件掩码%
由事件 ID 的整数替换。
%包含列表%
被要同步的文件/目录的绝对路径替换。
案件 直接
每次同步时执行:
同步处理程序 同步处理程序参数
默认 同步处理程序参数 是:
%INCLUDE-LIST%%destination-dir%/
额外的替换:
%包含列表%
替换为要同步的文件/目录的相对路径列表。
案件 壳
每次同步时执行(如果 递归同步 不使用):
同步处理程序 同步处理程序参数
默认 同步处理程序参数 是:
同步列表 %label% %INCLUDE-LIST-PATH%
默认 同步处理程序参数 对于初始同步,如果 --递归同步 设置
是:
初始同步 %label% %INCLUDE-LIST%
在这种情况下, 同步处理程序 应该非递归地同步文件和
来自“synclist”上的路径 %INCLUDE-LIST-PATH% 的文件列表中的目录。
还 同步处理程序 应该按路径从目录递归同步数据
%INCLUDE-LIST-PATH% 手动排除“initialsync”上的额外文件。
额外的替换:
%类型%
被“同步”/“初始同步”取代。
%包含列表路径%
替换为包含列表文件的路径。
%包含列表%
替换为要同步的文件/目录的相对路径列表。
不建议。 没有经过很好的测试。
案件 同步直接
每次同步时执行:
同步处理程序 同步处理程序参数
同步处理程序 应该是一条通往 rsync的 二进制的。
默认 同步处理程序参数 是:
-aH --delete --exclude-from %EXCLUDE-LIST-PATH% --include-from
%INCLUDE-LIST-PATH% --exclude='*' %watch-dir%/ %destination-dir%/
如果选项 --rsync--首选-包含 未设置并且
-aH --delete --include-from %INCLUDE-LIST-PATH% --exclude='*' %watch-dir%/
%目的地目录%/
如果设置了选项
错误代码“24”来自 同步处理程序 在这种情况下将被忽略。 我们也推荐
忽略退出代码“23”。
额外的替换:
%包含列表路径%
替换为包含列表文件的路径
%排除列表路径%
替换为排除列表文件的路径
%RSYNC-ARGS%
默认被替换 同步处理程序参数,但没有
"%watch-dir%/ %destination-dir%/"
推荐案例。
案件 同步shell
每次同步时执行:
同步处理程序 同步处理程序参数
默认 同步处理程序参数 是:
rsynclist %label% %INCLUDE-LIST-PATH% [%EXCLUDE-LIST-PATH%]
在这种情况下, 同步处理程序 应该使用参数运行“rsync”应用程序:
-aH --删除之前 --包括-来自 %包含列表路径% - 排除 '*'
如果选项 --rsync-首选包含 启用。
并带有参数:
-aH --删除之前--排除 %排除列表路径% --包含-来自
%包含列表路径% - 排除 '*'
如果选项 --rsync-首选包含 被禁用。
额外的替换:
%包含列表路径%
替换为 rsync 包含列表文件的路径
%排除列表路径%
替换为 rsync 排除列表文件的路径
推荐案例。
案件 同步
在这种情况下,没有直接的 exec*() 调用。 在这种情况下 同步 负载 同步-
处理器 作为共享库 打开(3) 并调用函数"int
clsyncapi_rsync(const char *inclist, const char *exclist)" 用于每次同步。
列入名单 是带有 rsync 的“--include-from”选项规则的文件路径。 这个
参数始终不为 NULL。
排除列表 是带有 rsync 的“--exclude-from”选项规则的文件路径。 这个
参数为 NULL 如果 --rsync-首选包含 置。
不包括 需要 优先权 超过 包含。
也可以定义函数“int clsyncapi_init(ctx_t *, index_t *)”和“int
clsyncapi_deinit()" 以此来初始化和取消同步过程
共享对象。
要 fork 进程应该使用函数“pid_t clsyncapi_fork(ctx_t *)”代替
"pid_t fork()" 使 clsync 能够杀死孩子。
请参见示例文件“clsync-synchandler-rsyncso.c”。
推荐案例。
案件 so
在这种情况下,没有直接的 exec*() 调用。 在这种情况下 同步 负载 同步-
处理器 作为共享库 打开(3) 并调用函数"int
clsyncapi_sync(int n, api_eventinfo_t *ei)" 用于每次同步。 n 是数量
要素 ei. ei 是一个结构数组,其中包含有关内容和方式的信息
同步(见下文)。
api_eventinfo_t 是一个结构:
结构 api_eventinfo {
uint32_t evmask; // 文件/目录的事件位掩码 by
径 径.
uint32_t 标志; //“如何同步”的标志
文件/目录
size_t path_len; // strlen(路径)
const char *path; // 这 径 文件/目录需要是
已同步
eventobjtype_t objtype_old; // 路径对象类型 径
活动前。
eventobjtype_t objtype_new; // 路径对象类型 径 after
事件。
};
typedef 结构 api_eventinfo api_eventinfo_t;
事件位掩码 (evmask) 值可以从
“/usr/include/linux/inotify.h”。
可能有下一个标志的值(标志):
枚举 eventinfo_flags {
EVIF_NONE = 0x00000000, // 无修饰符
EVIF_RECURSIVELY = 0x00000001 // 递归同步文件/目录
};
如果选项,可以使用标志“EVIF_RECURSIVELY” --递归同步 置。
这是按路径的文件或目录 径 可以确定 旧对象类型 和
对象类型_new.
旧对象类型 通过事件之前的路径报告对象是哪种类型。
对象类型_new 报告事件后通过路径成为对象的类型。
旧对象类型 和 对象类型_new 有类型 事件对象类型_t.
枚举 eventobjtype {
EOT_UNKNOWN = 0, // 未知
EOT_DOESNTEXIST = 1, // 不存在(尚未创建或已经创建)
已删除)
EOT_FILE = 2, // 文件
EOT_DIR = 3, // 目录
typedef 枚举 eventobjtype eventobjtype_t;
也可以定义函数“int clsyncapi_init(options_t *, index_t *)”和
“int clsyncapi_deinit()”通过这个初始化和取消同步过程
共享对象。
要分叉进程应该使用函数“pid_t clsyncapi_fork(options_t *)”
而不是“pid_t fork()”使clsync能够杀死孩子。
请参见示例文件“clsync-synchandler-so.c”。
推荐案例。
环境 变数
输出变量 - 在调用之前由 clsync 设置的变量 同步处理程序.
输出 变量
CLSYNC_STATUS - 同步的状态(请参阅描述中的可能状态
--状态文件)
CLSYNC_ITERATION - 初始同步后完成的同步迭代计数,请参见
--max-iterations 选项
规则
过滤规则可用于设置 clsync 应该监控哪些事件以及它应该监控哪些事件
应该忽略。
注意! 此规则不保证过滤的文件/目录不会被同步。 这个可以
发生是因为文件或目录可以出现在 同步处理程序 运行(或之后
它但在此之前 同步处理程序 将到达目录),因此添加一个为时已晚
排除。 如果您需要保证文件同步防止您可以使用内部过滤器
的规则 同步处理程序 程序(例如,rsync 有选项“--exclude”,
“--exclude-from”和“--filter”)或使用禁用任何“递归”同步 同步 (和
删除 rsync 的“-av”选项(如果使用)。 要禁用递归同步,您可以使用:
简单
已经是非递归的
直接
已经是非递归的
壳
不要启用选项 --have-recursive-sync。
同步直接
使用选项 --rsync-prefer-include 并设置 同步处理程序参数 到-lptgoD
--delete --include-from %INCLUDE-LIST-PATH% --exclude='*' %watch-dir%/
%目的地目录%/
同步shell
使用选项 --rsync-prefer-include。
同步
使用选项 --rsync-prefer-include。
so
不要启用选项 --have-recursive-sync。
过滤规则可以放入 规则文件 每行一条规则。
规则格式: [+-][fdw*]正则表达式
+ - 手段包括; - - 表示排除; f - 表示文件; d - 表示目录; w - 方法
走到目录; * - 意味着所有。
例如:-*^/[Tt]est
不建议使用 w 模式“rsyncdirect”、“rsyncshell”和“rsyncso”中的规则。
rsync的(1) 允许一个人在“--include”规则中设置同步和仅一起行走
(由于同步文件删除问题,“--files-from”不合适)。 所以有
可能是 clsync 的问题 w 在这种情况下的规则。
更多的例子:
同步 pwdb 文件和 sshd_config(非 rsync 情况):
+f^/密码$
+f^/组$
+f^/阴影$
+f^/ssh/sshd_config$
+w^$
+w^/ssh$
-*
同步 pwdb 文件和 sshd_config(rsync 案例):
+f^/密码$
+f^/组$
+f^/阴影$
+f^/ssh/sshd_config$
+d^$
+d^/ssh$
-*
同步 /srv/lxc 树(rsync 案例):
-d/sess(离子)?s?$
-f/tmp/
+*
讯号
1 - (HUP) 重读过滤规则
2 - (INT) 退出而不等待同步进程(“hard kill”,杀死孩子)
3 - (QUIT) 等待当前同步进程并退出(“软杀”,等待子进程)
10 - 运行线程的 GC 函数
12 - 运行完全重新同步
15 - (TERM) 退出而不等待同步进程(“hard kill”,杀死孩子)
16 - 中断 sleep()/select() 和 wait() [用于调试和内部使用]
29 - 转储信息到 转储目录 [用于调试]
如果您需要终止 clsync 但留下孩子,那么您可以使用 9-th (KILL) 信号。
诊断
初始 rsync 进程在 clsync 启动时运行速度非常慢
可能有太大的排除列表传递给 rsync。 这可能发生,如果
您在 clsync 的规则中使用正则表达式排除了数千个文件。 他们会
一一传递给rsync的排除列表。
要诊断它,您可以使用“-U”选项并查看 rsync-排除-列表路径 文件
(见 SYNC 处理程序 案件 d)
为了防止这种情况,建议直接为 rsync 编写此类规则(而不是通过
同步)。
例如,通常问题出在 PHP 的会话文件上。 你不应该排除它们
在带有“-f/sess_.*”的 clsync 规则中,但您应该直接在 rsync 中排除它
(例如使用«--exclude "sess_*"»)。
可能会在 stderr 上发出以下诊断信息:
错误:无法在 [...] 上进行 inotify_add_watch():设备上没有剩余空间(错误号:28)
没有足够的 inotify 监视描述符被允许。 可以通过增加来解决
“sysctl fs.inotify.max_user_watches”的值
错误:得到非零退出代码 退出码 [...]
同步处理程序 返回非零退出代码。 可能,您应该处理退出代码
它或您的同步器过程运行不佳。 我使用rsync的情况,你可以找到
退出代码的含义 男子 1 rsync的.
If 退出码 等于 23 并且您正在使用 同步 和这个结合 rsync的, 这个
可能会发生,例如在接下来的情况下:
- 目的地空间不足。
- 你正在运行 clsync --线程=满 和 rsync --备份。 看
错误报告 ⟨https://bugzilla.samba.org/show_bug.cgi?id=10081⟩。
要确认问题,您可以尝试将“return 0”或“exit 0”添加到您的
同步处理程序.
坏 系统 呼叫
如果启用了 --use-seccomp 选项,则错误可能是由使用
禁止系统调用。 它是 同步 错误或黑客攻击尝试。
要获得支持,请参阅 客户服务.
配置 文件
同步 支持配置文件。
默认情况下 同步 尝试读取下一个文件(按指定顺序):
〜/.clsync.conf
/etc/clsync/clsync.conf
这可能会被选项覆盖 --配置文件.
同步 只读取一个配置文件。 换句话说,如果选项 --配置文件 是不是
设置和归档 〜/.clsync.conf 是可访问和可解析的, 同步 不会尝试打开
/etc/clsync/clsync.conf. 命令行选项优先于配置文件选项。
配置文件使用 glib 的 g_key_file_* API 解析。 这意味着,该配置应该
由键值行的组(块)组成,如示例所示:
[默认]
背景 = 1
模式 = rsyncshell
调试 = 0
输出 = 系统日志
标签 = 默认
pid 文件 = /var/run/clsync-%label%.pid
[调试]
配置块继承=默认
调试 = 5
背景 = 0
输出 = 标准错误
[测试]
模式=rsyncdirect
调试=3
还有油嘴滑舌的 GKF API 不支持多个分配。 如果你需要列出一些值
(例如退出代码)只需在单个赋值中用逗号列出它们(例如
“忽略退出代码 = 23,24”)。
在这个例子中,设置了 3 个块——“默认”、“调试”和“测试”。 并阻止
“debug”继承了块“default”的设置,除了选项“debug”、“background”和
“输出”。
默认情况下 同步 使用名为“default”的块。 块名称可以通过选项设置
--配置块.
聚类
尚未实施。 别 尝试 至 使用 簇 功能。
还没有描述。
示例
镜像 a 目录:
clsync -Mrsyncdirect -W/path/to/source_dir -D/path/to/destination_dir
同步 'authorized_keys' 文件:
mkdir -p /etc/clsync/规则
printf "+w^$0^[^/]+$0^[^/]+/.ssh$0^[^/]+/.ssh/authorized_keys$0" >
/etc/clsync/rules/authorized_files_only
clsync -Mdirect -Scp -W/mnt/master/home/ -D/home
-R/etc/clsync/rules/authorized_files_only ---Pfp --parents %INCLUDE-LIST%
%目的地目录%
镜像 a 目录, 但是 更快:
clsync -w5 -t5 -T5 -Mrsyncdirect -W/路径/到/源目录 -D/路径/到/目的地目录
[email protected] 镜像 of a 目录:
clsync -w0 -t0 -T0 -Mrsyncdirect -W/路径/到/源目录 -D/路径/到/目的地目录
制作 二 目录 同步:
clsync -Mrsyncdirect --background -z /var/run/clsync0.pid --输出系统日志
-Mrsyncdirect -W/path/to/dir1 -D/path/to/dir2 --modification-signature '*'
clsync -Mrsyncdirect --background -z /var/run/clsync1.pid --输出系统日志
-Mrsyncdirect -W/path/to/dir2 -D/path/to/dir1 --modification-signature '*'
定影 权限 of a 网站:
clsync -w3 -t3 -T3 -x1 -W/var/www/site.example.org/root -Mdirect -Schown --uid 0
--gid 0 -Ysyslog -b1 --修改签名 uid,gid -- --from=root
www 数据:www 数据 %INCLUDE-LIST%
'原子' 同步:
clsync --exit-on-no-events --max-iterations=20 --mode=rsyncdirect -W/var/www_new
-Srsync --%RSYNC-ARGS% /var/www_new/ 在/ var / WWW /
移动 a 网络服务器:
clsync --exit-on-no-events --max-iterations=20 --pre-exit-hook=/root/stop-here.sh
--exit-hook=/root/start-there.sh --mode=rsyncdirect --ignore-exitcode=23,24
--重试=3 -W 在/ var / WWW -S rsync --%RSYNC-ARGS% 在/ var / WWW / rsync://clsync@另一个-
主机/var/www/
复制 档 至 从节点 运用 磷酸二钙(1):
clsync -Msimple -S pdcp -W /opt/global -b -Y syslog -- -a %INCLUDE-LIST%
%包含列表%
复制 档 至 从节点 运用 ftp(1):
clsync -Mdirect -S uftp -W/opt/global --background=1 --output=syslog -- -M
248.225.233.1%INCLUDE-LIST%
A 干 运行 至 请点击 rsync的(1) 参数 这 同步 将 使用:
clsync -Mrsyncdirect -S echo -W/path/to/source_dir -D/path/to/destination_dir
An 另一个 干 运行 至 看 形成一种 同步 将 呼叫 磷酸二钙(1):
clsync -Msimple -S echo -W /opt/global -b0 -- pdcp -a %INCLUDE-LIST% %INCLUDE-LIST%
您可以在“/usr/share/doc/clsync/examples/”目录中尝试更多工作示例。 复制
这个目录某处(例如进入“/ tmp目录”)并尝试运行“clsync-start-rsync.sh”
那里。 “testdir/from”中的任何文件/目录修改都将同步到
几秒钟后“testdir/to”。
使用 onworks.net 服务在线使用 clsync