gzip和bzip2工具主要对单一的文件进行压缩,不支持目录的压缩功能,如果需要对大量的文件或目录进行压缩的话,那就只能用tar了。

 

 

[root@szm ~]# tar --help

Usage: tar [OPTION...] [FILE]...

GNU `tar' saves many files together into a single tape or disk archive, and can

restore individual files from the archive.

 

Examples:

  tar -cf archive.tar foo bar  # Create archive.tar from files foo and bar.

  tar -tvf archive.tar         # List all files in archive.tar verbosely.

  tar -xf archive.tar          # Extract all files from archive.tar.

 

 Main operation mode:

 

  -A, --catenate, --concatenate   append tar files to an archive

  -c, --create               create a new archive

  -d, --diff, --compare      find differences between archive and file system

      --delete               delete from the archive (not on mag tapes!)

  -r, --append               append files to the end of an archive

  -t, --list                 list the contents of an archive

      --test-label           test the archive volume label and exit

  -u, --update               only append files newer than copy in archive

  -x, --extract, --get       extract files from an archive

 

 Operation modifiers:

 

      --check-device         check device numbers when creating incremental

                             archives (default)

  -g, --listed-incremental=FILE   handle new GNU-format incremental backup

  -G, --incremental          handle old GNU-format incremental backup

      --ignore-failed-read   do not exit with nonzero on unreadable files

      --level=NUMBER         dump level for created listed-incremental archive

  -n, --seek                 archive is seekable

      --no-check-device      do not check device numbers when creating

                             incremental archives

      --no-seek              archive is not seekable

      --occurrence[=NUMBER]  process only the NUMBERth occurrence of each file

                             in the archive; this option is valid only in

                             conjunction with one of the subcommands --delete,

                             --diff, --extract or --list and when a list of

                             files is given either on the command line or via

                             the -T option; NUMBER defaults to 1

      --sparse-version=MAJOR[.MINOR]

                             set version of the sparse format to use (implies

                             --sparse)

  -S, --sparse               handle sparse files efficiently

 

 Overwrite control:

 

  -k, --keep-old-files       don't replace existing files when extracting,

                             treat them as errors

      --keep-newer-files     don't replace existing files that are newer than

                             their archive copies

      --no-overwrite-dir     preserve metadata of existing directories

      --overwrite            overwrite existing files when extracting

      --overwrite-dir        overwrite metadata of existing directories when

                             extracting (default)

      --recursive-unlink     empty hierarchies prior to extracting directory

      --remove-files         remove files after adding them to the archive

      --skip-old-files       don't replace existing files when extracting,

                             silently skip over them

  -U, --unlink-first         remove each file prior to extracting over it

  -W, --verify               attempt to verify the archive after writing it

 

 Select output stream:

 

      --ignore-command-error ignore exit codes of children

      --no-ignore-command-error   treat non-zero exit codes of children as

                             error

  -O, --to-stdout            extract files to standard output

      --to-command=COMMAND   pipe extracted files to another program

 

 Handling of file attributes:

 

      --acls                 Save the ACLs to the archive

      --atime-preserve[=METHOD]   preserve access times on dumped files, either

                             by restoring the times after reading

                             (METHOD='replace'; default) or by not setting the

                             times in the first place (METHOD='system')

      --delay-directory-restore   delay setting modification times and

                             permissions of extracted directories until the end

                             of extraction

      --group=NAME           force NAME as group for added files

      --mode=CHANGES         force (symbolic) mode CHANGES for added files

      --mtime=DATE-OR-FILE   set mtime for added files from DATE-OR-FILE

  -m, --touch                don't extract file modified time

      --no-acls              Don't extract the ACLs from the archive

      --no-delay-directory-restore

                             cancel the effect of --delay-directory-restore

                             option

      --no-same-owner        extract files as yourself (default for ordinary

                             users)

      --no-same-permissions  apply the user's umask when extracting permissions

                             from the archive (default for ordinary users)

      --no-selinux           Don't extract the SELinux context from the archive

                            

      --no-xattrs            Don't extract the user/root xattrs from the

                             archive

      --numeric-owner        always use numbers for user/group names

      --owner=NAME           force NAME as owner for added files

  -p, --preserve-permissions, --same-permissions

                             extract information about file permissions

                             (default for superuser)

      --preserve             same as both -p and -s

      --same-owner           try extracting files with the same ownership as

                             exists in the archive (default for superuser)

  -s, --preserve-order, --same-order---保留文件原始排序规则

                             sort names to extract to match archive

      --selinux              Save the SELinux context to the archive

      --xattrs               Save the user/root xattrs to the archive

 

 Device selection and switching:

 

  -f, --file=ARCHIVE         use archive file or device ARCHIVE

      --force-local          archive file is local even if it has a colon

  -F, --info-script=NAME, --new-volume-script=NAME

                             run script at end of each tape (implies -M)

  -L, --tape-length=NUMBER   change tape after writing NUMBER x 1024 bytes

  -M, --multi-volume         create/list/extract multi-volume archive

      --rmt-command=COMMAND  use given rmt COMMAND instead of rmt

      --rsh-command=COMMAND  use remote COMMAND instead of rsh

      --volno-file=FILE      use/update the volume number in FILE

 

 Device blocking:

 

  -b, --blocking-factor=BLOCKS   BLOCKS x 512 bytes per record

  -B, --read-full-records    reblock as we read (for 4.2BSD pipes)

  -i, --ignore-zeros         ignore zeroed blocks in archive (means EOF)

      --record-size=NUMBER   NUMBER of bytes per record, multiple of 512

 

 Archive format selection:

 

  -H, --format=FORMAT        create archive of the given format--创建打包文件的时候指定格式如gnu,posix,v7等

 

 FORMAT is one of the following:

 

    gnu                      GNU tar 1.13.x format

    oldgnu                   GNU format as per tar <= 1.12

    pax                      POSIX 1003.1-2001 (pax) format

    posix                    same as pax

    ustar                    POSIX 1003.1-1988 (ustar) format

    v7                       old V7 tar format

 

      --old-archive, --portability

                             same as --format=v7

      --pax-option=keyword[[:]=value][,keyword[[:]=value]]...

                             control pax keywords

      --posix                same as --format=posix

  -V, --label=TEXT           create archive with volume name TEXT; at

                             list/extract time, use TEXT as a globbing pattern

                             for volume name

 

 Compression options:

 

  -a, --auto-compress        use archive suffix to determine the compression

                             program

  -I, --use-compress-program=PROG

                             filter through PROG (must accept -d)

  -j, --bzip2                filter the archive through bzip2

  -J, --xz                   filter the archive through xz

      --lzip                 filter the archive through lzip

      --lzma                 filter the archive through lzma

      --lzop

      --no-auto-compress     do not use archive suffix to determine the

                             compression program

  -z, --gzip, --gunzip, --ungzip   filter the archive through gzip

  -Z, --compress, --uncompress   filter the archive through compress--结合Compress技术创建压缩文件;

 

 Local file selection:

 

      --add-file=FILE        add given FILE to the archive (useful if its name

                             starts with a dash)

      --backup[=CONTROL]     backup before removal, choose version CONTROL

  -C, --directory=DIR        change to directory DIR----更改目录

      --exclude=PATTERN      exclude files, given as a PATTERN---排除特定文件

      --exclude-backups      exclude backup and lock files

      --exclude-caches       exclude contents of directories containing

                             CACHEDIR.TAG, except for the tag file itself--排除缓存

      --exclude-caches-all   exclude directories containing CACHEDIR.TAG

      --exclude-caches-under exclude everything under directories containing

                             CACHEDIR.TAG

      --exclude-tag=FILE     exclude contents of directories containing FILE,

                             except for FILE itself

      --exclude-tag-all=FILE exclude directories containing FILE

      --exclude-tag-under=FILE   exclude everything under directories

                             containing FILE

      --exclude-vcs          exclude version control system directories

  -h, --dereference          follow symlinks; archive and dump the files they

                             point to

      --hard-dereference     follow hard links; archive and dump the files they

                             refer to

  -K, --starting-file=MEMBER-NAME

                             begin at member MEMBER-NAME in the archive

      --newer-mtime=DATE     compare date and time when data changed only

      --no-null              disable the effect of the previous --null option

      --no-recursion         avoid descending automatically in directories

      --no-unquote           do not unquote filenames read with -T

      --null                 -T reads null-terminated names, disable -C

  -N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE

                             only store files newer than DATE-OR-FILE

      --one-file-system      stay in local file system when creating archive

  -P, --absolute-names       don't strip leading `/'s from file names--保留文件原始权限

      --recursion            recurse into directories (default)

      --suffix=STRING        backup before removal, override usual suffix ('~'

                             unless overridden by environment variable

                             SIMPLE_BACKUP_SUFFIX)

  -T, --files-from=FILE      get names to extract or create from FILE

      --unquote              unquote filenames read with -T (default)

  -X, --exclude-from=FILE    exclude patterns listed in FILE

 

 File name transformations:

 

      --strip-components=NUMBER   strip NUMBER leading components from file

                             names on extraction

      --transform=EXPRESSION, --xform=EXPRESSION

                             use sed replace EXPRESSION to transform file

                             names

 

 File name matching options (affect both exclude and include patterns):

 

      --anchored             patterns match file name start

      --ignore-case          ignore case

      --no-anchored          patterns match after any `/' (default for

                             exclusion)

      --no-ignore-case       case sensitive matching (default)

      --no-wildcards         verbatim string matching

      --no-wildcards-match-slash   wildcards do not match `/'

      --wildcards            use wildcards (default)

      --wildcards-match-slash   wildcards match `/' (default for exclusion)

 

 Informative output:

 

      --checkpoint[=NUMBER]  display progress messages every NUMBERth record

                             (default 10)

      --checkpoint-action=ACTION   execute ACTION on each checkpoint

      --index-file=FILE      send verbose output to FILE

  -l, --check-links          print a message if not all links are dumped

      --no-quote-chars=STRING   disable quoting for characters from STRING

      --quote-chars=STRING   additionally quote characters from STRING

      --quoting-style=STYLE  set name quoting style; see below for valid STYLE

                             values

  -R, --block-number         show block number within archive with each

                             message

      --show-defaults        show tar defaults

      --show-omitted-dirs    when listing or extracting, list each directory

                             that does not match search criteria

      --show-transformed-names, --show-stored-names

                             show file or archive names after transformation

      --totals[=SIGNAL]      print total bytes after processing the archive;

                             with an argument - print total bytes when this

                             SIGNAL is delivered; Allowed signals are: SIGHUP,

                             SIGQUIT, SIGINT, SIGUSR1 and SIGUSR2; the names

                             without SIG prefix are also accepted

      --utc                  print file modification dates in UTC

  -v, --verbose              verbosely list files processed---显示处理过程

      --warning=KEYWORD      warning control

  -w, --interactive, --confirmation

                             ask for confirmation for every action

 

 Compatibility options:

 

  -o                         when creating, same as --old-archive; when

                             extracting, same as --no-same-owner

 

 Other options:

 

  -?, --help                 give this help list

      --restrict             disable use of some potentially harmful options

      --usage                give a short usage message

      --version              print program version

 

Mandatory or optional arguments to long options are also mandatory or optional

for any corresponding short options.

 

The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.

The version control may be set with --backup or VERSION_CONTROL, values are:

 

  none, off       never make backups

  t, numbered     make numbered backups

  nil, existing   numbered if numbered backups exist, simple otherwise

  never, simple   always make simple backups

 

Valid arguments for the --quoting-style option are:

 

  literal

  shell

  shell-always

  c

  c-maybe

  escape

  locale

  clocale

 

*This* tar defaults to:

--format=gnu -f- -b20 --quoting-style=escape --rmt-command=/sbin/rmt

--rsh-command=/usr/bin/rsh

 

Report bugs to <bug-tar@gnu.org>.

[root@szm test]# tar -cf tmp1.etc.tar etc
[root@szm test]# tar -zcf etc.tar.gz.etc etc ------------gzip
[root@szm test]# tar -jcf etc.tar.bz2.etc etc -----------bzip2
[root@szm test]# ll
total 81596
drwxr-xr-x. 138 root root    12288 Mar 11 13:17 etc
-rw-r--r--.   1 root root  7713854 Mar 11 13:23 etc.tar.bz2.etc
-rw-r--r--.   1 root root  8909334 Mar 11 13:22 etc.tar.gz.etc
-rw-r--r--.   1 root root 33454080 Mar 11 13:18 tmp1.etc.tar
-rw-r--r--.   1 root root 33454080 Mar 11 13:14 tmp.etc.tar
[root@szm test]# tar -tvf etc.tar.gz.etc -----------查看包内容
 
[root@szm test]# rm -rf etc/
[root@szm test]# ll
total 81584
-rw-r--r--. 1 root root  7713854 Mar 11 13:23 etc.tar.bz2.etc
-rw-r--r--. 1 root root  8909334 Mar 11 13:22 etc.tar.gz.etc
-rw-r--r--. 1 root root 33454080 Mar 11 13:18 tmp1.etc.tar
-rw-r--r--. 1 root root 33454080 Mar 11 13:14 tmp.etc.tar
 
[root@szm test]# tar -zxf etc.tar.gz.etc 
[root@szm test]# ll
total 81596
drwxr-xr-x. 138 root root    12288 Mar 11 13:17 etc
-rw-r--r--.   1 root root  7713854 Mar 11 13:23 etc.tar.bz2.etc
-rw-r--r--.   1 root root  8909334 Mar 11 13:22 etc.tar.gz.etc
-rw-r--r--.   1 root root 33454080 Mar 11 13:18 tmp1.etc.tar
-rw-r--r--.   1 root root 33454080 Mar 11 13:14 tmp.etc.tar
 
 

 SUID权限对文件有效,表现为sS(文件对用户没有开放执行权限),SUID公针对二进制可执行程序有效。用户要有执行权限这个位的设置才有意义。

SGID对文件和目录有效,sS(目录对组用户没有执行权限),SUID对二进制可执行程序有用,如果SGID权限针对目录,用户对目录至少要有读与执行权限,如果该目录对组开放有写权限,那么用户在这个目录下创建文件的有效组将与目录的有效组相同;

Sticky仅以目录有效,tT(目录对其他人没有执行权限)如果一个目录设置有Sticky权限,这个目录的所有文件公有管理员与文件拥有人才有权利删除文件,包括文件的移动,改名等 操作

 

 

 

[root@szm sgid]# ll -d

drwxrwsrwt. 2 root sgid 4096 Mar 11 13:54 .

[root@szm sgid]# chmod g-x,o-x .
[root@szm sgid]# ll -d
drwxrwSrwT. 2 root sgid 4096 Mar 11 13:54 .
 特殊权限依赖于文件或目录自身的可执行权限,如果没有可执行权限,则为SST

 

 

 磁盘配额实现的基本流程:

1.启用文件系统的磁盘配额功能

2.初始化磁盘配额数据库

3.启用/关闭磁盘配额功能

4.设置磁盘配额数据库

5.查看磁盘配额报表

6.测试磁盘配额功能

 

[root@szm packages]# quotacheck -help

Utility for checking and repairing quota files.

quotacheck [-gucbfinvdmMR] [-F <quota-format>] filesystem|-a

 

-u, --user                check user files-------aquota.user

-g, --group               check group files------aquota.group

-c, --create-files        create new quota files

-b, --backup              create backups of old quota files

-f, --force               force check even if quotas are enabled

-i, --interactive         interactive mode

-n, --use-first-dquot     use the first copy of duplicated structure

-v, --verbose             print more information

-d, --debug               print even more messages

-m, --no-remount          do not remount filesystem read-only

-M, --try-remount         try remounting filesystem read-only,

                          continue even if it fails

-R, --exclude-root        exclude root when checking all filesystems

-F, --format=formatname   check quota files of specific format

-a, --all                 check all filesystems

-h, --help                display this message and exit

-V, --version             display version information and exit

 

Bugs to jack@suse.cz

[root@szm packages]# quotaon --help
quotaon: Usage:
quotaon [-guvp] [-F quotaformat] [-x state] -a
quotaon [-guvp] [-F quotaformat] [-x state] filesys ...
 
-a, --all                turn quotas on for all filesystems
-f, --off                turn quotas off
-u, --user               operate on user quotas
-g, --group              operate on group quotas
-p, --print-state        print whether quotas are on or off
-x, --xfs-command=cmd    perform XFS quota command
-F, --format=formatname  operate on specific quota format
-v, --verbose            print more messages
-h, --help               display this help text and exit
-V, --version            display version information and exit
 
[root@szm packages]# quotaoff --help
quotaoff: Usage:
quotaoff [-guvp] [-F quotaformat] [-x state] -a
quotaoff [-guvp] [-F quotaformat] [-x state] filesys ...
 
-a, --all                turn quotas off for all filesystems
-f, --off                turn quotas off
-u, --user               operate on user quotas
-g, --group              operate on group quotas
-p, --print-state        print whether quotas are on or off
-x, --xfs-command=cmd    perform XFS quota command
-F, --format=formatname  operate on specific quota format
-v, --verbose            print more messages
-h, --help               display this help text and exit
-V, --version            display version information and exit
 
[root@szm packages]# edquota --help
edquota: Usage:
edquota [-rm] [-u] [-F formatname] [-p username] [-f filesystem] username ...
edquota [-rm] -g [-F formatname] [-p groupname] [-f filesystem] groupname ...
edquota [-rm] [-u|g] [-F formatname] [-f filesystem] -t
edquota [-rm] [-u|g] [-F formatname] [-f filesystem] -T username|groupname ...
 
-u, --user                    edit user data
-g, --group                   edit group data
-r, --remote                  edit remote quota (via RPC)
-m, --no-mixed-pathnames      trim leading slashes from NFSv4 mountpoints
-F, --format=formatname       edit quotas of a specific format
-p, --prototype=name          copy data from a prototype user/group
    --always-resolve          always try to resolve name, even if it is
                              composed only of digits
-f, --filesystem=filesystem   edit data only on a specific filesystem
-t, --edit-period             edit grace period
-T, --edit-times              edit grace time of a user/group
-h, --help                    display this help text and exit
-V, --version                 display version information and exit
 
Bugs to: jack@suse.cz
 
[root@szm packages]# quota --help
quota: Usage: quota [-guqvswim] [-l | [-Q | -A]] [-F quotaformat]
quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -u username ...
quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -g groupname ...
quota [-qvswugQm] [-F quotaformat] -f filesystem ...
 
-u, --user                display quota for user
-g, --group               display quota for group
-q, --quiet               print more terse message
-v, --verbose             print more verbose message
-s, --human-readable      display numbers in human friendly units (MB, GB...)
    --always-resolve      always try to translate name to id, even if it is
 composed of only digits
-w, --no-wrap             do not wrap long lines
-p, --raw-grace           print grace time in seconds since epoch
-l, --local-only          do not query NFS filesystems
-Q, --quiet-refuse        do not print error message when NFS server does
                          not respond
-i, --no-autofs           do not query autofs mountpoints---不显示Automounter挂载的文件系统信息
-F, --format=formatname   display quota of a specific format
-f, --filesystem-list     display quota information only for given filesystems
-A, --nfs-all             display quota for all NFS mountpoints
-m, --no-mixed-pathnames  trim leading slashes from NFSv4 mountpoints
-h, --help                display this help message and exit
-V, --version             display version information and exit
 
Bugs to: jack@suse.cz
 
[root@szm packages]# repquota --help
repquota: Utility for reporting quotas.
Usage:
repquota [-vugsi] [-c|C] [-t|n] [-F quotaformat] (-a | mntpoint)
 
-v, --verbose               display also users/groups without any usage
-u, --user                  display information about users
-g, --group                 display information about groups
-s, --human-readable        show numbers in human friendly units (MB, GB, ...)
-t, --truncate-names        truncate names to 8 characters
-p, --raw-grace             print grace time in seconds since epoch
-n, --no-names              do not translate uid/gid to name
-i, --no-autofs             avoid autofs mountpoints
-c, --batch-translation     translate big number of ids at once
-C, --no-batch-translation  translate ids one by one
-F, --format=formatname     report information for specific format
-h, --help                  display this help message and exit
-V, --version               display version information and exit
 
Bugs to jack@suse.cz
 

 

1.启用文件系统的磁盘配额功能:vi /etc/fstab

     default变为:usrquota,grpquota

2.mount -o remount

查看分区是分启用了Quota:mount | grep -i 分区名

或者是下面这个方法

mount -o remount,usrquota,grpquota /home/

3.初始化磁盘配额数据库:[root@szm packages]# quotacheck -avug

重新扫描所有文件系统 [root@szm packages]# quotacheck -avug -mf

4.启用/关闭磁盘配额功能:[root@szm packages]# quotaon -avug-----启用配额

5.设置磁盘配额数据库:[root@szm packages]# edquota -u user1

 复制配额:[root@szm packages]# edquota -p user1 -u user2

宽限时间:[root@szm packages]# edquota -t
6.查看磁盘配额报表:
[root@szm packages]# quota -s -u -l

[root@szm packages]# quota -s -u -l user2 user3 user4

[root@szm packages]# quota -gvs sgid
[root@szm packages]# repquota -as
[root@szm packages]# repquota -auvgs
7.配额邮件警告机制:warnquota
 
[root@szm Desktop]# grep "^[^#]" /etc/warnquota.conf 
; ; and # type comments are allowed
MAIL_CMD = "/usr/sbin/sendmail -t"
FROM =  root@example.com
SUBJECT = NOTE: You are exceeding your allocated disk space limits
CC_TO = "root@example.com"
SUPPORT = "root@example.com"
PHONE = "(123) 456-1111 or (222) 333-4444"
MESSAGE         = Your disk usage has exceeded the agreed limits\
 on this server|Please delete any unnecessary files on following filesystems:|
SIGNATURE = root@example.com
GROUP_MESSAGE  = Hello,|\
your group %i is using too much disk space at %h.|\
I suggest you to clean up group files on the following filesystems:|
GROUP_SIGNATURE = See you!| Your admin|
 
[root@szm Desktop]# setquota --help
setquota: Usage:
  setquota [-u|-g] [-rm] [-F quotaformat] <user|group>
<block-softlimit> <block-hardlimit> <inode-softlimit> <inode-hardlimit> -a|<filesystem>...
  setquota [-u|-g] [-rm] [-F quotaformat] <-p protouser|protogroup> <user|group> -a|<filesystem>...
  setquota [-u|-g] [-rm] [-F quotaformat] -b [-c] -a|<filesystem>...
  setquota [-u|-g] [-F quotaformat] -t <blockgrace> <inodegrace> -a|<filesystem>...
  setquota [-u|-g] [-F quotaformat] <user|group> -T <blockgrace> <inodegrace> -a|<filesystem>...
 
-u, --user                 set limits for user
-g, --group                set limits for group
-a, --all                  set limits for all filesystems
    --always-resolve       always try to resolve name, even if is
                           composed only of digits
-F, --format=formatname    operate on specific quota format
-p, --prototype=protoname  copy limits from user/group
-b, --batch                read limits from standard input
-c, --continue-batch       continue in input processing in case of an error
-r, --remote               set remote quota (via RPC)
-m, --no-mixed-pathnames      trim leading slashes from NFSv4 mountpoints
-t, --edit-period          edit grace period
-T, --edit-times           edit grace times for user/group
-h, --help                 display this help text and exit
-V, --version              display version information and exit
 
Bugs to: jack@suse.cz
 
[root@szm Desktop]# setquota -u user2 0 102400 0 100 /home/