rdist 命令
本文档介绍位于/usr/bin/rdist文件中的旧AIX® rdist命令,以及与新rdistd守护进程一起使用的新/usr/sbin/rdist命令。
/usr/bin/rdist 命令
用途
远程文件分布客户机程序
语法
描述
rdist 命令维护多个主机上的相同文件副本。 rdist 命令保存文件的所有者、组、模式和修改时间,也可能更新正在运行的程序。 rdist 命令能接收来自下列来源的导向信息:
- 缺省分发文件, $HOME 目录中的 distfile 文件。
- 由 - 标志指定的另一个分发文件。
- 用于扩充或覆盖分发文件中的变量定义的命令行参数。
- 充当小分发文件的命令行参数。
如果不使用 -f 标志,rdist 命令会在 $HOME 目录中查找 distfile 文件。 如果找不到 distfile 文件,就会查找 Distfile 文件。
由 Name 参数指定的值作为一个要更新的文件名或一个要执行的子命令读入。 如果在命令行中不为 Name 参数指定值,rdist 命令会更新分发文件中列出的所有文件和目录。 如果您对 姓名 参数指定 - (减号) ,那么 雷德斯特 命令将使用标准输入。 如果由 Name 参数指定的文件名与子命令的名称相同,rdist 命令将 Name 参数解释为一个子命令。
rdist 命令需要在每个主机上配置 .rhosts 文件。 有关详细信息,请参阅 TCP/IP 的文件格式 在 文件引用 中 。
- 如果远程机器上的 /usr/bin/rdist 目录中不存在 rdist 命令,请创建从 /usr/bin/rdist 目录到 rdist 命令的实际位置的链接。 该位置通常是 /usr/ucb/rdist 目录。
- 目前, 雷德斯特 命令只能处理 7 位 ASCII 文件名称。
标志
| 项 | 描述 |
|---|---|
| -b | 如果它们不相同,执行二进制比较并更新文件。 |
| -c | 引导 rdist 命令将剩余的参数当作一个小分发文件解释。 可用的参数是:
注: 请不要将 -c 标志与 -, -d或 命令 标志一起使用。
|
| -d 参数=值 | 定义 Argument 变量,此变量具有 Value 变量指定的值。 -d 标志在 distfile 文件中定义或重设变量定义。 Value 可以被指定为一个空字符串、名称或由圆括号包围并由制表符或空格隔开的名称列表。 |
| -D | 打开调试输出。 |
| -f FileName | 指定分发文件的名称。 如果不使用 -f 标志,在 $HOME 目录中,缺省值为 distfile 或 Distfile 文件。 |
| -h | 复制链接指向的文件,而不是链接本身。 |
| -一 | 忽略未解决的链接。 rdist 命令维护正在传输的文件的链接结构,并在不能找到所有链接的情况下给用户警告。 |
| 命令 主机 | 限定被更新的机器。 可以使用 -m Host 选项多次以限制列在 distfile 文件中的主机子集的更新。 |
| -n | 显示子命令而不执行它们。 使用 -n 标志调试 distfile 文件。 |
| -q | 在静默模式下操作。 -q 选项禁止在标准输出上显示修改的文件。 |
| -R | 除去外部的文件。 如果更新了一个目录,那么在远程主机上除主目录上的所有文件都会被除去。 使用 -R 标志维护相同目录副本。 |
| -v | 验证所有主机上的最新的文件;列出过期的文件。 而 rdist -v 命令既不改变文件也不发送邮件。 当它们一起使用时,此标志会覆盖 -b 标志。 |
| -y | 防止最近的文件副本被旧文件副本替换。 当时间戳记和大小不同时,通常文件会被更新。 -y 标志防止 rdist 命令更新比主文件新的文件。 |
| -w | 为目标目录名追加完整的文件路径名。 通常,rdist 命令仅使用名称的最后组成部分以重命名文件,保留所复制文件的目录结构。 当 -w 标志与以 ~ (代字号) 开头的文件名一起使用时,除主目录以外的所有东西都被追加到目标名称。 对其余的文件名称,不以 / (斜杠) 或 ~ (代字号) 开头的文件名称使用目标用户的主目录作为根目录。 |
分发文件(distfile 文件)
分发文件指定要复制的文件,为发布指定目标主机,和当使用 rdist 命令发布更新文件时执行的操作。 通常,rdist 命令在 $HOME 目录中使用 distfile 文件。 如果使用 -f 标志可以指定一个不同的文件。
- 条目格式
每个分发文件的记录都有如下格式:
项 描述 VariableName = NameList 定义用于分发文件的其他记录变量 SourceList, DestinationList, 或 SubcommandList)。 [标签:] SourceList -> DestinationList SubcommandList 引导 rdist 命令发布在 SourceList 变量中命名的文件到主机,主机在 DestinationList 变量中命名。 分发文件命令执行其他功能。 [Label:]SourceList :: TimeStampFile SubcommandList 引导 rdist 命令以更新自给定的日期后改变了的文件。 分发文件子命令执行其他功能。 如果文件比时间戳记文件新,那么更新每个用 SourceList 变量指定的文件。 此格式对于恢复文件是有用的。 标号是可选的,并用于为部分更新标识一个子命令。
- 条目
项 描述 VariableName 标识在分发文件中使用的变量。 NameList 指定一个文件、目录、主机或子命令的列表。 SourceList 对 rdist 命令指定本地主机上的文件和目录以用作分发的主副本。 DestinationList 表示接收文件副本的主机。 SubcommandList 列出要执行的分发文件子命令。 rdist 命令将换行字符、制表符和空格当作分隔符处理。 用于扩展的分发文件变量以一个 $(美元符号)开头,后面接一个单独的字符或一个以 {} (大括号) 括起来的名称。 注释以 #(磅号)开头并以一个换行字符结尾。
- 源和目标列表格式
分发文件源和目标列表包含零个或多个用空格分隔的名称,具有如下格式:
[Name1] [Name2] [Name3] ...
rdist 命令在本地主机上标识和扩展下列 shell 元字符,其方式与 csh 命令相同。
- [(左括号)
- ] (右括号)
- {(左花括号)
- } (右花括号)
- ((左括号)
- ) (右括号)
- * (星号)
- ? (问号)
为了防止这些字符被扩展,在它们之前加上一个 \ (反斜杠)。 rdist 命令也扩展 ~ (代字号),其方法与 csh 命令相同,但在本地和目标主机上分别进行。
- 分发文件子命令
用于 shell 的多个命令必须用 ;(分号)分隔。 命令在正在更新的主机上的用户主目录中执行。 special 子命令用于更新程序后重建专用的数据库。
分发文件子命令列表可以包含零个或多个下列子命令:
项 描述 安装 选项OptionalDestName]; 复制过期的文件和目录。 rdist 命令复制每个源文件或目录到每个目标列表中的主机上。 由 Options 变量指定的有效选项是 rdist 命令标志 -b, -h, -i, -R, -v, -w, 和 -y。 这选项仅用于由 SourceList 变量指定的文件。 当使用 -R 标志时,如果在主机上没有相应的文件名称,非空目录会被除去。 OptionalDestName 参数会将文件重命名。 如果没有 install 子命令出现在子命令列表中,或者目标名称没有被指定,将会使用源文件名。 如果在远程主机上不存在路径名中的目录,就创建它们。 在目标主机上使用的登录名称与本地主机上的相同,除非目标名称具有格式 login @host。
通知 名称列表; 发送邮件更新的文件列表和可能产生的任何错误到所列表名(NameList 参数)。 如果没有 @ (符号 "@") 出现在名称中,目标主机追加给名称(name@host)。 除了 NameList; 导致 rdist 命令更新所有由 SourceList 记录指定的文件,那些由 NameList 变量指定的文件除外。 except_pat NameList; 防止 rdist 命令更新任何包含字符串与 NameList 变量指定的列表中的成员相匹配的文件。 特殊 NameList "String"; 指定 shell 命令("String" 变量)在远程主机上执行,在此之前,更新或安装由 NameList 变量指定的文件。 如果 NameList 变量被省略,对每个更新或安装的文件执行 shell 命令。 shell 变量 FILE 在 rdist 命令执行 "String " 变量前设为当前文件名称。 "String" 值必须用 " "(双引号)括起来,并能在分发文件中跨越多行。
退出状态
本命令返回以下退出值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功完成。 |
| >0 | 说明发生错误。 |
示例
- 格式示例: VariableName = NameList
- 要指示要更新哪些主机的文件,请输入类似于以下内容的行:
其中HOSTS变量定义为matisse和root@arpa. 雷德斯特 命令更新主机上的文件matisse和root@arpa. 您可以将此变量用作目标列表。HOSTS =( matisse root@arpa ) - 要指示要用作 SourceList 条目的值的名称,请输入类似于以下内容的行:
其中FILES值定义为要用于 SourceList 条目的文件。FILES = ( /bin /lib/usr/bin /usr/games /usr/include/{*.h,{stand,sys,vax*,pascal,machine}/*.h} /usr/lib /usr/man/man? /usr/ucb /usr/local/rdist ) - 要指示从更新过程中排除哪些文件,请输入类似于以下内容的行:
其中EXLIB值定义为要从更新过程中排除的文件列表。EXLIB = ( Mail.rc aliases aliases.dir aliases.pag crontab dshrc sendmail.cf sendmail.fc sendmail.hf sendmail.st uucp vfont) - 将所有文件从 /usr/src/bin 复制到 arpa 展开 namelist 变量,以便除 namelist 变量中存在的文件以外的所有文件都具有.o作为扩展复制:
/usr/src/bin ->arpa except_pat(\e\e.o\e ${<namelist> /SCCS\e ${<namelist>}或
/usr/src/bin ->arpa except_pat(\\.o\e ${<namelist> /SCCS\e ${<namelist>} - 将所有文件从 /usr/src/bin 复制到 arpa (具有.o扩展:
/usr/src/bin ->arpa except_pat(\\.o\$ /SCCS\$
- 要指示要更新哪些主机的文件,请输入类似于以下内容的行:
- 格式示例:[label:] SourceList - DestinationList SubcommandList
- 要将文件的源列表复制到主机的目标列表,请输入类似于以下内容的行:
行的 [Label:] 记录是可选的,并不在此处出现。 $(美元符号) 和 {} (花括号) 将导致文件名FILES,HOSTS和EXLIB将展开到先前示例中为其指定的列表中。 示例的余下部分包含子命令列表。${FILES} ->${HOSTS} install -R except /usr/lib/${EXLIB} ; except /usr/games/lib ; special /usr/sbin/sendmail "/usr/sbin/sendmail.bz" ; - 要使用 [标签:] 条目,请按如下所示输入行:
srcsL: /usr/src/bin -> arpa except_pat (\e\e.o\e$ /SCCS\e$ ) ;标签为srcsL:并且可用于识别此条目以进行更新。 该/usr/src/bin文件是要复制的源,并且主机arpa是副本的目标。 第三行包含一个来自子命令列表的子命令。
- 要使用时间戳记文件,请输入与以下内容类似的行:
$(美元符号) 和 {} (花括号) 导致指定的名称FILES将扩展至为其指定的列表。 时间戳记文件为:stamp.cory. 最后一行是子命令列表中的子命令。${FILES} :: stamp.cory notify root@cory
- 要将文件的源列表复制到主机的目标列表,请输入类似于以下内容的行:
文件
| 项 | 描述 |
|---|---|
| /usr/bin/rdist | 包含 rdist 命令。 |
| $HOME/distfile | 包含一个子命令列表,此列表由 rdist 命令读取。 |
| /tmp/rdist | 包含一个更新列表。 这是一个临时文件。 |
/usr/sbin/rdist 命令
本文档描述了位于 /usr/bin/rdist 文件中的旧 AIX rdist 命令以及与新的 rdistd 守护程序配合使用的新的 /usr/sbin/rdist 命令。
用途 (/usr/sbin/rdist) )
用于远程发布文件客户程序。
语法 (/usr/sbin/rdist) )
- 要使用分发文件
/usr/sbin/rdist [ -F N ] [ -一个 努姆 ] [ 一 努姆 ] [ -d var=value] [ -我 < 本地 logopts> ] [ -L <远程 logopts> ] [ - distfile] [ -M 最大处理器 命令 主机 ] [ -o 迪舍普斯 ] [ -t 超时 ] [ -p <Rdist-path> ] [ -P <传输路径> ] [ 名称 ... ]
- 要将自变量解释为小型分发文件
/usr/sbin/rdist-Fn-c name...[login@]host[:dest]
- 将旧 rdist 作为服务器调用
/usr/sbin/rdist -服务器
- 对于版本信息
/usr/sbin/rdist -V
描述 (/usr/sbin/rdist) )
- 当前目录中的分发文件 distfile
- 如果 distfile 被指定为 -,那么是标准输入。
- 如果未使用 -f 标志,rdist 查找名为 distfile 和 Distfile 的文件。
- 如果使用 -c 标志,那么随后的参数被解释为一个小 distfile。 同意义的 distfile 如下。
( filename ... ) -> [user@]host install [dest name] ;
如果没有指定 name 参数, rdist 将会更新全部列在 distfile 中的文件和目录。 否则,这个参数将会是要更新的文件名或一个要执行的命令的标号。 如果标号和文件名冲突,它假定为一个标号。 这些可以一起使用以更新使用特定命令的特定文件。
-Server 选项为老版本的 rdist 提供了向后兼容性,老版本用这个选项将 rdist 放置到服务器模式。 如果 rdist 以 -Server 命令行选项启动,它试图运行老版本的 rdist。 这个选项只有在旧 rdist 存在于 /usr/bin/rdist 时才会有效。
/bin/sh -c rdistd -Srsh host -l remuser rdistd -S在前面的示例中, 主机 参数是目标主机的名称, 雷姆用户 是用于建立连接的用户的名称, 雷迪德 是目标主机上的 雷德斯特 服务器命令。
传输程序必须与 雷什的语法相兼容。 否则,传输程序应该由 shell 脚本包装,此 shell 脚本理解此命令行语法。
在每个目标主机上,rdist 将运行以下命令:
rdistd -S
或
<rdistd path> -S
在前面的示例中,指定了 -p 标志。 If -p flag is not included, or the <rdistd path> is a simple filename, 雷迪德 or <rdistd path> must be somewhere in the 路径 of the user running 雷德斯特 on the remote (target) host.
| 项 | 描述 |
|---|---|
| TMPDIR | 要使用的临时目录名称。 缺省值为 /tmp。 |
标志 (/usr/sbin/rdist) )
| 项 | 描述 |
|---|---|
| -A 号 | 只要文件系统中存在最小数目的空闲文件 (inodes),就更新或安装文件。 |
| -a 号 | 只要文件系统中存在最小的可用空间,就更新或安装文件。 |
| -d var = value | 指定 value 给 var 变量。 这个选项用于定义或覆盖 distfile 中的变量定义。 Value 可以是空字符串、名称或一个由圆括号括起来并由制表符和(或)空格分隔的名称列表。 |
| -f | 相继更新全部客户程序而不全派生子进程。 |
| -f 目标文件 | 将 distfile 用作分发文件。 如果 distfile 被指定为 -,从标准输入读取。 |
| -l logopts | 设置本地记录选项。 参阅 Message Logging 部分可以看到关于 logopts 语法的更多信息。 |
| -L 标志选项 | 设置远程记录选项。 logopts 与本地记录相同,那些被传递给远程服务器(rdistd)的值除外。 请参阅 Message Logging 部分可以看到关于 logopts 语法的更多信息。 |
| -M 编号 | 限定同时运行的子 rdist 进程的最大数目为 num。 缺省值为 4。 |
| -m 机器 | 限定给定机器的文件的更新。 可以给定多个 -m 参数以限定一部分主机的更新,这些主机在 distfile 中列出。 |
| -n | 显示但不执行命令。 使用 -n 标志调试 distfile。 |
| -o 反乌托邦 | 指定要启用的 dist 选项。 迪索普茨 是以逗号分隔的选项列表。
distopts 的有效值为:
|
| -o 反乌托邦 | (dist 选项, 接上):
|
| -p <Rdist-path> | 在目标主机上的给定路径中搜索 rdistd 服务器。 |
| -P <Rdist-path> | 使用如 transport-path 中给定的传输程序。 transport-path 可以是一个冒号分隔的可能路径名列表。 在这种情况下,使用存在路径的第一个组成部分。 |
| -t 超时 | 设置 timeout 周期(秒)以等待来自远程 rdist 服务器的响应。 缺省值为 900 秒。 |
| -V | 显示版本信息并退出。 |
消息记录
rdist 命令提供一套消息设备,每个设备包含一个消息类型列表以指定发送给这个设备哪种类型的消息。 每个本地客户机(rdist)和远程服务器(rdistd)都维护单独的关于什么类型的消息记录到什么设备的副本。
-l logopts 标志指定在本地客户机上使用什么记录选项。 -L logopts 标志指定传递给远程 rdistd 服务器什么记录选项。
facility=types:facility= types... - stdout
- 到标准输出的消息。
- 文件
- 发送给文件的消息。 可以按格式
file = filename = types指定文件名。 - syslog
- 发送给 syslogd 设备的消息。
- notify
- 发送给内部 rdistnotify 设备的消息。 在 distfile 中将此工具与 notify 结合使用以指定用邮件将哪些消息发送至 notify 地址。
- 更改
- 记录更改的事物的消息。
- 信息
- 记录常规信息。
- notice
- 记录更改的事物的常规消息。 这包含像为安装特定的目标所需要的生成目录这样的事物,但并不在 distfile 中明确指定。
- nerror
- 为正常的非致命错误记录消息。
- ferror
- 记录致命错误消息。
- 警告
- 记录错误的警告,这些错误并不像 nerror 类型消息那样严重。
- verbose
- 为更多的信息记录消息,但低于调试级别。
- 调试
- 记录调试信息。
- 全部
- 记录除调试消息之外的信息。
分发文件 (/usr/sbin/rdist) )
分发文件指定要复制的文件,为发布指定目标主机,和当使用 rdist 命令发布更新文件时执行的操作。
- 条目格式
- 每个分发文件的记录都有如下格式:
- VariableName = NameList
- 定义用于分发文件的其他记录变量 SourceList, DestinationList, 或 SubcommandList)。
- [标签:] SourceList -> DestinationList SubcommandList
- 引导 rdist 命令发布在 SourceList 变量中命名的文件到主机,主机在 DestinationList 变量中命名。
- [Label:] SourceList :: TimeStampFile SubcommandList
- 引导 rdist 命令以更新自给定的日期后改变了的文件。 分发文件子命令执行其他功能。
标号是可选的。 它们用于为部分更新标识命令。
- 条目
项 描述 VariableName 标识在分发文件中使用的变量。 NameList 指定一个文件、目录、主机或子命令的列表。 SourceList 对 rdist 命令指定本地主机上的文件和目录以用作分发的主副本。 DestinationList 表示接收文件副本的主机。 SubcommandList 列出要执行的分发文件子命令。 rdist 命令将换行字符,制表符和空格当作分隔符处理。 用于扩展的分发文件变量以一个美元符号开头,后面接一个单独的字符或一个以大括号括起来的名称。
注释以英镑符号开头,以一个换行符结束。
- 源和目标列表格式
- 分发文件源和目标列表包含零个或多个用空格分隔的名称,具有如下格式:
[Name1] [Name2] [Name3] ...rdist 命令在本地主机上标识和扩展下列 shell 元字符,其方式与 csh 命令相同。- [ 左方括弧
- ] 右方括弧
- { 左大括弧
- } 右大括弧
- ( 左圆括号
- ) 右圆括号
- * 星号
- 我不知道 问号
为防止扩展这些字符,在它们之前加上一个反斜杠。 rdist 命令也扩展代字号,其方式与 csh 命令相同,但在本地和目标主机上分别进行。 当 -o whole 选项与一个以代字号开头的文件名一起使用时,除主目录之外的所有东西都会被附加到目标名称。 对其余的文件名称,不以正斜杠或代字号开头的文件名使用目标用户的主目录作为根目录。
- 分发文件子命令
用于 shell 的多个命令需用分号隔开。 命令在正在更新的主机上的用户主目录中执行。 程序更新后,特定的子命令可被用于重建专用的数据库。
分发文件子命令列表可以包含零个或多个下列子命令:- install Options[OptionalDestName];
- 复制过期的文件和目录。 rdist 命令复制每个源文件或目录到每个目标列表中的主机上。
- notify NameList;
- 发送邮件更新的文件列表和可能产生的任何错误到所列表名(NameList 参数)。
- except NameList;
- 导致 rdist 命令更新所有由 SourceList 记录指定的文件,那些由 NameList 变量指定的文件除外。
- except_pat NameList;
- 防止 rdist 命令更新任何包含字符串与 NameList 变量指定的列表中的成员相匹配的文件。
- special NameList "String";
- 指定在远程主机上执行的 shell 命令("String" 变量),在此之前,更新或安装由 NameList 变量指定的文件。
- cmdspecial NameList "String";
- cmdspecial 命令与 special 命令相似,只有当全部命令执行完毕时而不是更新每个文件后执行此命令这点除外。
如果主机名以一个加号结尾,NFS 检查禁用。 这相当于只对此主机禁用 -o chknfs 选项。
退出状态 (/usr/sbin/rdist) )
本命令返回以下退出值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功完成。 |
| >0 | 发生错误。 |
示例 (/usr/sbin/rdist) )
- 为指明主机文件要更新,按以下行输入:
HOSTS =( matisse root@arpa )在前面的示例中, HOSTS 变量定义为 matisse 和 root@arpa. 。 rdist 命令会更新主机 matisse 和 root@arpa 上的文件。
可以将这个变量作为目标列表使用。
- 为指示一个名称作为 SourceList 记录的值使用,请输入类似下列的行:
FILES = ( /bin /lib/usr/bin /usr/games /usr/include/{*.h,{stand,sys,vax*,pascal,machine}/*.h} /usr/lib /usr/man/man? /usr/ucb /usr/local/rdist )在上述示例中, FILES 值定义为要用于 SourceList 条目的文件。
- 要指示将从更新进程中排除的文件,请输入类似如下的行:
EXLIB = ( Mail.rc aliases aliases.dir aliases.pag crontab dshrc sendmail.cf sendmail.fc sendmail.hf sendmail.st uucp vfont)在前面的示例中, EXLIB 值定义为要从更新过程中排除的文件的列表。
- 为从 /usr/src/bin 到 arpa 复制全部文件,扩展名称列表变量,以复制全部文件除了在名称列表中存在和具有 .o 扩展名的文件以外:
/usr/src/bin ->arpa except_pat(\e\e.o\e ${<namelist> /SCCS\e ${<namelist>}或
/usr/src/bin ->arpa except_pat(\\.o\e ${<namelist> /SCCS\e ${<namelist>} - 从 /usr/src/bin 到 arpa 复制全部文件,以 .o 为扩展名的文件除外:
/usr/src/bin ->arpa except_pat(\\.o\$ /SCCS\$
格式示例:[label:] SourceList - DestinationList SubcommandList
- 为复制一个文件源列表到主机的目标列表,请输入类似如下的行:
${FILES} ->${HOSTS} install -R except /usr/lib/${EXLIB} ; except /usr/games/lib ; special /usr/sbin/sendmail "/usr/sbin/sendmail.bz" ;行 [Label:] 记录是可选的,并不在此显示。 美元符号和大括弧会使文件名 FILES、HOSTS 和 EXLIB 扩展成前面示例中为它们指明的列表。
示例的余下部分包含子命令列表。
- 为使用 [Label:] 记录,请输入下列行:
srcsL: /usr/src/bin -> arpa except_pat (\e\e.o\e$ /SCCS\e$ ) ;标号是 srcsL:,并可用于为更新而标识该记录。 /usr/src/bin 文件是被复制的源,主机 arpa 是复制的目标。
第三行包含一个来自子命令列表的子命令。
- 为使用时间戳记文件,请输入类似如下的行:
${FILES} :: stamp.cory notify root@cory美元符号和大括号引起由 FILES 指定的名称扩展成为它指明的列表。 时间戳记文件为 stamp.cory。
最后一行是一个来自子命令列表的子命令。
文件 (/usr/sbin/rdist) )
| 项 | 描述 |
|---|---|
| /usr/sbin/rdist | 版本 6.1.5 中包含 rdist 命令。 |
| distfile | 包含输入命令。 |
| $TMPDIR/rdist * | 更新列表的临时文件。 |