本文共 10864 字,大约阅读时间需要 36 分钟。
备份和恢复的技能在操作系统的管理中应用相当广泛。
这部分内容主要通过tar命令配合cron、date命令及其它的一些技巧来实现自动化备份和恢复。
tar命令的一些帮助信息:
NAME tar - The GNU version of the tar archiving utilitySYNOPSIS
tar <operation> [options]Operations:
[-]A --catenate --concatenate [-]c --create [-]d --diff --compare [-]r --append [-]t --list [-]u --update [-]x --extract --get --deleteCommon Options:
-C, --directory DIR -f, --file F -j, --bzip2 -p, --preserve-permissions -v, --verbose -z, --gzip 注意tar有些特殊,甚至于支持没-的参数。但我个人不提倡。脚本是用来应用,应该是易于理解的。我们平时经常用的参数有:
tar xzvf 解压一个*.tar.gz文件 tar xjvf 解压一个*.tar.bz2的文件tar czvf 压缩成一个*.tar.gz的文件
tar xjvf 压缩成一个*.tar.bz2的文件如果去掉v,就不显示详细信息,实际在脚本中,如果不需要交互或隐藏执行过程的话,不要加好了。
我们还可以通过-C的参数来指定解压的目录。
下面参数之一必须使用: c xz 是gzip的压缩格式,压缩后文件后缀为gz;
j 是bzip2的压缩格式,压缩后文件后缀为bz2。A 是添加压缩包到已经存在的一个压缩包中。
u 指比较压缩包中的文件和当前文件,如果比压缩包的更新,就替换掉。
r 添加文件或文件夹到一个已经存在的压缩包中。-t这是显示压缩文件文件列表。
-d 比较压缩包中的文件与文件系统中的文件的差异。
--delete 从压缩包中删除文件或文件夹。 如果在脚本中,我们为了更容易识别不同时创建的文件,我们可以用日期给压缩包命名。这里我们可以看一个示例:
#!/bin/shcd /home/admin/backup
year=`date +%Y`
month=`date +%m`
day=`date +%d`
now=$year-$month-$day
mkdir backup_$now
tar zcvf backup_$now/backup.tar.gz /home/html
关于如何通过date来显示当前的时间,请查阅详细的date man 手册,但要注意一些重点参数,需要识记。
同时我们还可以通过脚本来实现周一全备,以后每天一次增量备份,周日提醒光盘备份,当然所有这些都需要脚本和计划任务cron的参与,关于cron请查看相关的帮助。
FORMAT controls the output. The only valid option for the second form specifies Coordinated Universal Time. Interpreted sequences are:%% a literal %
%a locale’s abbreviated weekday name (e.g., Sun)
%A locale’s full weekday name (e.g., Sunday)
%b locale’s abbreviated month name (e.g., Jan)
%B locale’s full month name (e.g., January)
%c locale’s date and time (e.g., Thu Mar 3 23:05:25 2005)
%C century; like %Y, except omit last two digits (e.g., 21)
%d day of month (e.g, 01)
%D date; same as %m/%d/%y
%e day of month, space padded; same as %_d
%F full date; same as %Y-%m-%d
%g last two digits of year of ISO week number (see %G)
%G year of ISO week number (see %V); normally useful only with %V
%h same as %b
%H hour (00..23)
%I hour (01..12)
%j day of year (001..366)%k hour ( 0..23)
%l hour ( 1..12)
%m month (01..12)
%M minute (00..59)
%n a newline
%N nanoseconds (000000000..999999999)
%p locale’s equivalent of either AM or PM; blank if not known
%P like %p, but lower case
%r locale’s 12-hour clock time (e.g., 11:11:04 PM)
%R 24-hour hour and minute; same as %H:%M
%s seconds since 1970-01-01 00:00:00 UTC
%S second (00..60)
%t a tab
%T time; same as %H:%M:%S
%u day of week (1..7); 1 is Monday
%U week number of year, with Sunday as first day of week (00..53)
%V ISO week number, with Monday as first day of week (01..53)
%w day of week (0..6); 0 is Sunday%W week number of year, with Monday as first day of week (00..53)
%x locale’s date representation (e.g., 12/31/99)
%X locale’s time representation (e.g., 23:13:48)
%y last two digits of year (00..99)
%Y year
%z +hhmm numeric timezone (e.g., -0400)
%:z +hh:mm numeric timezone (e.g., -04:00)
%::z +hh:mm:ss numeric time zone (e.g., -04:00:00)
%:::z numeric time zone with : to necessary precision (e.g., -04, +05:30)
%Z alphabetic time zone abbreviation (e.g., EDT)
By default, date pads numeric fields with zeroes. The following optional flags may follow ‘%’:
- (hyphen) do not pad the field _ (underscore) pad with spaces 0 (zero) pad with zeros ^
use upper case if possible # use opposite case if possibleAfter any flags comes an optional field width, as a decimal number; then an optional modifier,
which is either E to use the locale’s alternate representations if available, or O to use the locale’s alternate numeric symbols if available. 我们也可以通过tar实现增量备份,这个就需要我们查看tar的官方文档。 -g, --listed-incremental F create/list/extract new GNU-format incremental backup-G, --incremental
create/list/extract old GNU-format incremental backup如何跟踪软链接
-h, --dereference don’t dump symlinks; dump the files they point to 保持原来的文件结构 -l, --one-file-system stay in local file system when creating an archive ALL OPTIONS --atime-preserve don’t change access times on dumped files-b, --blocking-factor N
block size of Nx512 bytes (default N=20)-B, --read-full-blocks
reblock as we read (for reading 4.2BSD pipes)--backup BACKUP-TYPE
backup files instead of deleting them using BACKUP-TYPE simple or numbered--block-compress
block the output of compression program for tapes-C, --directory DIR
change to directory DIR --check-links warn if number of hard links to the file on the filesystem mismatch the number of links recorded in the archive--checkpoint
print directory names while reading the archive-f, --file [HOSTNAME:]F
use archive file or device F (default "-", meaning stdin/stdout)-F, --info-script F --new-volume-script F
run script at end of each tape (implies --multi-volume)--force-local
archive file is local even if has a colon--format FORMAT
selects output archive format v7 - Unix V7 oldgnu - GNU tar <=1.12 gnu - GNU tar 1.13 ustar - POSIX.1-1988 posix - POSIX.1-2001-g, --listed-incremental F
create/list/extract new GNU-format incremental backup-G, --incremental
create/list/extract old GNU-format incremental backup-h, --dereference
don’t dump symlinks; dump the files they point to--help like this manpage, but not as cool
-i, --ignore-zeros
ignore blocks of zeros in archive (normally mean EOF)--ignore-case
ignore case when excluding files--ignore-failed-read
don’t exit with non-zero status on unreadable files--index-file FILE
send verbose output to FILE instead of stdout-j, --bzip2
filter archive through bzip2, use to decompress .bz2 files-k, --keep-old-files
keep existing files; don’t overwrite them from archive-K, --starting-file F
begin at file F in the archive--keep-newer-files
do not overwrite files which are newer than the archive-l, --one-file-system
stay in local file system when creating an archive-L, --tape-length N
change tapes after writing N*1024 bytes-m, --touch, --modification-time
don’t extract file modified time-M, --multi-volume
create/list/extract multi-volume archive--mode PERMISSIONS
apply PERMISSIONS while adding files (see chmod(1))-N, --after-date DATE, --newer DATE
only store files newer than DATE--newer-mtime DATE
like --newer, but with a DATE--no-anchored
match any subsequenceof the name’s components with --exclude--no-ignore-case
use case-sensitive matching with --exclude--no-recursion
don’t recurse into directories--no-same-permissions
apply user’s umask when extracting files instead of recorded permissions--no-wildcards
don’t use wildcards with --exclude--no-wildcards-match-slash
wildcards do not match slashes (/) with --exclude--null --files-from reads null-terminated names, disable --directory
--numeric-owner
always use numbers for user/group names-o, --old-archive, --portability
like --format=v7; -o exhibits this behavior when creating an archive (deprecated behav- ior)-o, --no-same-owner
do not attempt to restore ownership when extracting; -o exhibits this behavior when extracting an archive-O, --to-stdout
extract files to standard output--occurrence NUM
process only NUM occurrences of each named file; used with --delete, --diff, --extract, or --list--overwrite
overwrite existing files and directory metadata when extracting--overwrite-dir
overwrite directory metadata when extracting--owner USER
change owner of extraced files to USER-p, --same-permissions, --preserve-permissions
extract all protection information-P, --absolute-names
don’t strip leading ‘/’s from file names--pax-option KEYWORD-LIST
used only with POSIX.1-2001 archives to modify the way tar handles extended header key- words--posix
like --format=posix--preserve
like --preserve-permissions --same-order--acls this option causes tar to store each file’s ACLs in the archive.
--selinux
this option causes tar to store each file’s SELinux security context information in the archive.--xattrs
this option causes tar to store each file’s extended attributes in the archive. This option also enables --acls and--selinux if they haven’t been set already, due to the fact that the data for those are stored in special xattrs.--no-acls
This option causes tar not to store each file’s ACLs in the archive and not to extract any ACL information in an archive.--no-selinux
this option causes tar not to store each file’s SELinux security context information in the archive and not to extract any SELinux information in an archive.--no-xattrs
this option causes tar not to store each file’s extended attributes in the archive and not to extract any extended attributes in an archive. This option also enables --no-acls and --no-selinux if they haven’t been set already.-R, --record-number
show record number within archive with each message--record-size SIZE
use SIZE bytes per record when accessing archives--recursion
recurse into directories--recursive-unlink
remove existing directories before extracting directories of the same name--remove-files
remove files after adding them to the archive--rmt-command CMD
use CMD instead of the default /usr/sbin/rmt--rsh-command CMD
use remote CMD instead of rsh(1)-s, --same-order, --preserve-order
list of names to extract is sorted to match archive-S, --sparse
handle sparse files efficiently--same-owner
create extracted files with the same ownership--show-defaults
display the default options used by tar--show-omitted-dirs
print directories tar skips while operating on an archive--strip-components NUMBER, --strip-path NUMBER
strip NUMBER of leading components from file names before extraction(1) tar-1.14 uses --strip-path, tar-1.14.90+ uses --strip-components
--suffix SUFFIX use SUFFIX instead of default ’~’ when backing up files-T, --files-from F
get names to extract or create from file F--totals
print total bytes written with --create-U, --unlink-first
remove existing files before extracting files of the same name--use-compress-program PROG
access the archive through PROG which is generally a compression program--utc display file modification dates in UTC
-v, --verbose
verbosely list files processed-V, --label NAME
create archive with volume name NAME--version
print tar program version number--volno-file F
keep track of which volume of a multi-volume archive its working in FILE; used with --multi-volume-w, --interactive, --confirmation
ask for confirmation for every action-W, --verify
attempt to verify the archive after writing it--wildcards
use wildcards with --exclude--wildcards-match-slash
wildcards match slashes (/) with --exclude--exclude PATTERN
exclude files based upon PATTERN-X, --exclude-from FILE
exclude files listed in FILE-Z, --compress, --uncompress
filter the archive through compress-z, --gzip, --gunzip, --ungzip
filter the archive through gzip--use-compress-program PROG
filter the archive through PROG (which must accept -d)-[0-7][lmh]
specify drive and density本文转自xiaoyuwang 51CTO博客,原文链接:http://blog.51cto.com/wangxiaoyu/371276,如需转载请自行联系原作者