# dump - 用于备份ext2或者ext3文件系统
dump命令 用于备份ext2或者ext3文件系统。可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。
检查ext2/3/4文件系统,确定哪些文件需要备份,这些需要备份的文件将会被复制到指定的磁盘或者其他存储介质。dump检查Ext 2/3/4文件系统上的文件,并确定哪些文件需要备份。这些文件被复制到给定的磁盘、磁带或其他存储介质中以确保安全保存(请参阅下面的-f选项以进行远程备份)。大于输出介质的转储被分解为多个卷。在大多数媒体上,大小是通过写入来确定的,直到返回媒体结束指示为止。
在无法可靠地返回媒体结束指示(例如一些盒式磁带驱动器)的媒体上,每个卷都是固定大小的;实际大小是通过指定墨盒介质或通过下面的磁带大小、密度和/或块计数选项来确定的。默认情况下,在提示操作员更改媒体后,每个卷都使用相同的输出文件名。
# 适用范围
# 语法
dump [选项] [-f 目标文件] 源文件
dump [-level#] [-ackMnqSuv] [-A file] [-B records]
[-b blocksize] [-d density] [-D file] [-e inode numbers]
[-E file] [-f file] [-F script] [-h level] [-I nr errors]
[-jcompression level] [-L label] [-Q file] [-s feet] [-T date]
[-y] [-zcompression level] files-to-dump
dump [-W | -w]
files-to-dump要么是文件系统的挂载点,要么是要作为文件系统子集备份的文件和目录列表。在前一种情况下,可以使用安装文件系统的路径或卸载文件系统的设备。在后一种情况下,对备份设置了某些限制:-u是不允许的,唯一支持的转储级别是0,所有文件和目录都必须驻留在同一个文件系统中。
# 选项
-level# # 备份级别。如果是0,那么就备份整个文件系统;如果大于0,那么就会备份相对于上一个更低级别备份的新文件和修改过的文件。默认是0。在子目录中,只允许使用0级备份
-a # “自动尺寸”。绕过所有的磁带长度计算,并写入,直到媒体结束指示返回。这是最适合大多数现代磁带驱动器,这是默认的。当附加到现有磁带或使用带有硬件压缩的磁带驱动器时,特别推荐使用此选项(在这种情况下,您永远无法确定压缩比)。
-A archive_file # 存档指定文件中的“内容转储表”,由RESTORE(8)使用,以确定文件是否在正在恢复的转储文件中。
-b blocksize # 每个转储记录的千字节数。默认的块大小为10,除非-d选项已用于指定6250 BPI或更高的磁带密度,在这种情况下,默认的块大小为32。但是请注意,由于IO系统将所有请求分割成块MAXBSIZE(可低到64 KB),因此在使用更高的值时,可能会遇到转储(8)和恢复(8)的问题,这取决于内核和/或libC版本。
-B records # 每卷1 kB块的数目。通常不需要,因为转储可以检测到媒体的结束.达到指定大小时,dump将等待您更改卷。此选项将重写基于长度和密度的磁带大小计算。如果压缩限制了每个卷的压缩输出的大小。多个值可以作为一个由逗号分隔的参数给出。每个值将按所列顺序用于一个转储卷;如果转储创建的卷比给定的值数多,则其余卷将使用最后一个值。这对于填充已经部分填充的媒体(然后在空媒体上继续使用全尺寸卷)或混合不同大小的媒体非常有用。
-c # 更改默认使用的磁带驱动器,密度为8000 BPI,长度为1700英尺。指定墨盒驱动器将覆盖媒体端检测。
-d density # 设置磁带密度。默认为1600 BPI。指定磁带密度将覆盖媒体端检测。
-D file # 设置文件的路径名,该文件存储有关前一个完整转储和增量转储的信息。默认位置是/etc/dumpdate
-e inodes # 不包含指定的inodes。inodes参数是一个逗号分隔的inode编号列表
-E file # 从文本文件中读取备份时要排除的inode列表。该文件应该是一个普通文件,其中包含由换行符分隔的inode编号。
-f filename # 将备份写入文件;文件可能是一个特殊的设备文件,如/dev/st0(atAPE驱动器)、/dev/rsd1c(软盘驱动器)、普通文件或-(标准输出)。多个文件名可以作为一个由逗号分隔的参数。每个文件将按所列顺序用于一个转储卷;如果转储所需的卷数量超过给定的名称数,则在提示进行媒体更改后,最后一个文件名将用于所有剩余卷。如果文件的名称为“host:file”或“user@host:file”,dump写入远程主机上的命名文件(应该已经存在,那么转储不会使用RMT(8)创建新的远程文件)。远程RMT(8)程序的默认路径名是“/etc/rmt”;这可以被环境变量RMT覆盖
-F script # 在每个磁带的末尾运行脚本(最后一个除外)。设备名称和当前卷号将在命令行上传递。如果转储应该继续而不要求用户更改磁带,则脚本必须返回0;如果转储应该继续,则返回0。更改磁带。任何其他退出代码都会导致转储中止。出于安全考虑,转储在运行脚本之前返回到实际用户ID和真实组ID。
-h level # 只对给定级别或以上的转储授予用户节点标志UF_NODUMP。默认荣誉级别为1,因此增量备份省略了这些文件,但完整备份保留了这些文件。当给定的备份级别大于这个-h指定的级别时,那么就不备份标志为“UF_NODUMP”的文件。
-I nr_errors # 默认情况下,在请求操作符干预之前,转储将忽略文件系统上的前32次读取错误。可以使用此标志将其更改为任意值。当在活动文件系统上运行转储时,这是非常有用的,因为读取错误只是表示映射和转储传递之间的不一致。0,代表忽略所有的错误
-jcompression_level # 使用bzlib库压缩要写入磁带上的每个块。只有在将文件或管道转储到文件或管道时,或者在将磁带驱动器转储到磁带驱动器时,如果磁带驱动器能够写入可变长度的块,此选项才能工作。您至少需要0.4b24版本的还原才能提取压缩磁带。使用压缩编写的磁带将与BSD磁带格式不兼容。(可选)参数指定bzlib将使用的压缩级别。默认压缩级别为2。如果指定了可选参数,则选项字母和参数之间不应该有空白。
-k # 使用Kerberos身份验证与远程磁带服务器对话。(只有在编译转储时启用此选项时才可用。)
-L label # 用户提供的文本字符串标签label被放置到转储头中,在这里,像RESTORE(8)和FILE(8)这样的工具可以访问它。请注意,此标签最多限于LBLSIZE(当前16)个字符,其中必须包括终止\0
-m # 如果指定了此标志,dump将优化自上次转储以来已更改但未修改的inode的输出(“已更改”和“修改”的含义在stat(2)中定义)。对于这些inode,dump将只保存元数据,而不是保存整个inode内容。此标志的使用必须是一致的,这意味着增量转储集中的每个转储都有该标志,或者没有人拥有该标志。
# 如果使用此选项,请注意,许多从档案中解压缩文件的程序(例如tar、rpm、unzip、dpkg)可能会将文件的mtime设置为过去的日期。如果修改后的mtime早于以前的级别转储,以这种方式安装的文件可能无法使用“dump-m”正确转储。使用这种“元数据”inode编写的磁带将与bsd磁带格式或较早版本的还原不兼容。
-M # 启用多卷功能.使用“-f”指定的名称被视为前缀,并按顺序写入<prefix>001, <prefix>002等等。这在将文件转储到Ext 2/3/4分区上的文件时非常有用,以绕过2GB文件大小限制
-n # 每当转储需要操作员注意时,以类似于wall(1)的方式通知组操作符中的所有操作符。
-q # 每当需要操作员注意时,立即使dump中止,而无需提示写入错误、磁带更改等。
-Q file # 启用快速文件访问支持。每个inode的磁带位置存储在RESTORE使用的文件中(如果用参数q和文件名调用)直接将磁带定位在当前正在进行的文件恢复中。这将节省从大型备份恢复单个文件的时间,保存磁带和驱动器的磁头。
# 建议将st驱动程序设置为在调用带参数的转储/还原之前返回逻辑磁带位置而不是物理磁带位置。因为并非所有磁带设备都支持物理磁带位置,所以当st驱动程序设置为默认物理设置时,这些磁带设备在转储/还原期间返回一个错误。请参见st(4)手册页,选项MTSETDRVBUFFER。,或mt(1)手册页,介绍如何设置驱动程序返回逻辑磁带位置。在使用参数“-Q”调用RESTORE之前,始终确保st驱动程序设置为返回调用转储过程中使用的相同类型的磁带位置。否则,还原可能会被混淆。
# 此选项可在转储到本地磁带(见上文)或本地文件时使用。
-s feet # 试图计算在特定密度下所需的磁带数量。如果超过此数量,则转储提示输入新磁带。建议在这个选项上有点保守。默认的磁带长度是2300英尺。指定磁带大小将覆盖媒体端检测。
-S # 大小估计。确定在没有实际执行转储的情况下执行转储所需的空间数量,并显示它将占用的估计字节数。这对于增量转储非常有用,可以确定需要多少卷媒体。
-T date # 指定备份的日期。使用指定的日期作为转储的开始时间,而不是从查看/etc/dumpdate中确定的时间。日期的格式与ctime(3)的格式相同,后面跟着rfc 822时区规范:一个正负号,后面跟着两位数的小时数和两位数的分钟数。例如,格林威治以西8小时为0800小时,格林威治以东2小时半为0230小时。此时区设置考虑了夏时制时间(如果适用于时区):当夏时制时间生效时,UTC偏移量将与夏时制时间无效时的抵消值不同。为了向后兼容,如果没有指定时区,则假定为本地时间。此选项对于希望在特定时间内转储的自动转储脚本非常有用。-T选项与-u选项相互排斥。
-u # 备份完成后,在/etc/dumpdates中记录备份的文件系统、日期。人们可以阅读/etc/dumpdate的格式,包括每行一个空闲的格式记录:文件系统名称、增量级别和ctime(3)格式转储日期,后面是rfc 822时区规范(详见-u选项)。如果未指定时区偏移量,则将时间解释为本地时间。每当写入文件时,文件中的所有日期都转换为本地时区,而不更改UTC时间。每个文件系统在每个级别上可能只有一个条目。如果需要,可以编辑/etc/dumpdate文件以更改任何字段。
-v # 显示详细的信息,帮助调试错误
-W # 显示出最近的备份时间、层级,检测需要备份的文件。当W选项出现时,其他的选项都被忽略。转储告诉操作符哪些文件系统需要转储。这个信息是从文件“/etc/dumpdate”和“/etc/fsman”收集的。-W选项会导致对”/etc/dumpdate”中的所有文件系统和”/etc/mtab”中的所有文件系统以及在”/etc/mtab”和”/etc/fstat”中识别的文件系统打印出来。最近的转储日期和级别将突出显示应该转储的文件系统。
-w # 类似于“-W”,但只在“/etc/mtab”和“/etc/fstat”中打印需要转储的可识别的文件系统。
-y # 使用lzo库压缩要写入磁带的每个块。这不能像zlib库那样压缩,但速度要快得多。只有在将文件或管道转储到磁带驱动器时,或者当磁带驱动器能够写入可变长度的块时,此选项才能工作。您至少需要0.4b34版本的还原才能提取压缩磁带。使用压缩编写的磁带将与bsd磁带格式不兼容。
-zcompression level # 使用zlib库压缩要写入磁带上的每个块。此选项仅在将文件或管道转储到文件或管道时才能工作,或者在将磁带驱动器转储到磁带驱动器时,如果磁带驱动器能够写入可变长度的块,则此选项才能工作。您将需要至少0.4b22版本的恢复,以提取压缩磁带。使用压缩编写的磁带将与BSD磁带格式不兼容。(可选)参数指定zlib将使用的压缩级别。默认压缩级别为2。如果指定了可选参数,则选项字母和参数之间不应该有空白。
# 说明
dump需要操作员对以下条件进行干预:磁带结束、转储结束、磁带写入错误、磁带打开错误或磁盘读取错误(如果存在nr错误的阈值以上)。除了通知-n键所暗示的所有操作符之外,在转储不能继续时,或者在发生严重错误时,转储与转储控制终端上的操作符进行交互。所有的问题转储构成必须通过键入“是”或“否”,适当地回答。
因为做一个dump需要花费大量的时间和精力,所以在每个磁带卷的开头都会转储检查点。如果由于某种原因写入该卷失败,则在重新装入和删除旧磁带并安装新磁带之后,在操作员许可下,转储将从检查点重新启动。
dump以周期性的间隔告诉操作符正在发生什么,包括通常对要写入的块数、所需磁带的数量、完成时间和磁带更改时间的低估计。输出是冗长的,因此其他人知道终端控制转储是繁忙的,而且会持续一段时间。
在发生灾难性磁盘事件时,将所有必要的备份磁带或文件恢复到磁盘所需的时间可以通过错位增量转储来保持在最低限度。一种将磁带数量降到最小的增量式转储的有效方法如下:
- 总是从0级备份开始,例如:“/sbin/dump -0u -f /dev/st0 /usr/src“。这应该每隔一段时间进行一次,比如每月一次或每两个月一次,并在一套永久保存下来的新磁带上进行。
- 在级别0之后,每天都会对活动文件系统进行转储,并使用此转储级别序列:” 3 2 5 4 7 6 9 8 9 9 ... “。
经过几个月左右的时间,每天和每周的磁带都应该从转储周期中轮换出来,新的磁带应该被带进来。
# 环境变量
- TAPE。如果没有指定“-f“选项,dump将使用通过TAPE指定的设备作为转储设备。TAPE可以是磁带名字、host:tapename、user@host:tapename。
- RMT。环境变量RMT将用于确定远程rmt(8)程序的路径名。
- RSH。dump使用此变量的内容来确定远程备份时要使用的远程shell命令的名称(rsh、ssh等)。如果未设置此变量,则将使用rcmd(3),但只有root才能进行远程备份。
# 文件
/dev/st0
要备份到的默认磁带单元。/etc/dumpdates
dump的日期记录。/etc/fstab
转储表:文件系统和频率/etc/mtab
转储表:挂载的文件系统/etc/group
查找组操作符
# 退出码
成功时dump状态为零。启动错误用退出代码1表示;异常终止用退出代码3表示。
当发生读取错误时,转储输出相应的物理磁盘块和扇区号以及Ext 2/3/4逻辑块号。它不打印相应的文件名,甚至不打印inode编号。用户必须使用调试器(8),命令nCheck和icheck将由转储输出的ext2blk数字转换为inode号,然后转换为文件名。
每个卷轴都需要一个新的进程,所以卷轴的父进程已经写的只是挂在一起,直到写了整个磁带。如果压缩为ON,则估计的磁带数不正确。如果dump知道dump序列,就会很好,保持跟踪的磁带,告诉操作员要安装什么磁带,并为运行恢复的操作员提供更多的帮助。
由于转储的安全历史,它无法在不以root用户身份运行的情况下进行远程备份。目前,如果设置setuid(与以前一样),它就能工作,但这可能会构成安全风险。请注意,可以将rsh设置为使用远程shell程序。
# 注意
这个版本的dump只能处理Ext 2/3/4文件系统,这可能被认为是一个错误。具体来说,它不适用于FAT文件系统。忽略文件系统上少于32个读取错误(用-i更改此错误)。如果注意读取错误很重要,则可以解析转储的输出,以查找包含文本“读取错误”的行。
# 举例
将/home目录所有内容备份到/tmp/homeback.bak文件中,备份层级为0并在/etc/dumpdates中记录相关信息:
dump -0u -f /tmp/homeback.bak /home
将/home目录所有内容备份到/tmp/homeback.bak文件中,备份层级为1(只备份上次使用层次0备份后发生过改变的数据)并在/etc/dumpdates中记录相关信息:
dump -1u -f /tmp/homeback.bak /home
通过dump命令的备份层级,可实现完整+增量备份、完整+差异备份,在配合crontab可以实现无人值守备份。