備份和恢復的技能在操作系統的管理中應用相當廣泛.
這部分內容主要通過tar命令配合cron、date命令及其它的一些技巧來實現自動化備份和恢復.
tar命令的一些幫助信息:
NAME
tar - The GNU version of the tar archiving utility
SYNOPSIS
tar <operation> [options]
Operations:
[-]A --catenate --concatenate
[-]c --create
[-]d --diff --compare
[-]r --append
[-]t --list
[-]u --update
[-]x --extract --get
--delete
Common 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
x
z 是gzip的壓縮格式,壓縮後文件後綴為gz;
j 是bzip2的壓縮格式,壓縮後文件後綴為bz2.
A 是添加壓縮包到已經存在的一個壓縮包中.
u 指比較壓縮包中的文件和當前文件,如果比壓縮包的更新,就替換掉.
r 添加文件或文件夾到一個已經存在的壓縮包中.
-t這是顯示壓縮文件文件列表.
-d 比較壓縮包中的文件與文件系統中的文件的差異.
--delete 從壓縮包中刪除文件或文件夾.
如果在腳本中,我們為了更容易識別不同時創建的文件,我們可以用日期給壓縮包命名.
這裡我們可以看一個示例:
#!/bin/sh
cd /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 ^
After 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,
--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
-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
--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
[火星人 ] Linux下常用的壓縮解壓命令[收藏]已經有796次圍觀