暗无天日

=============>DarkSun的个人博客

linux下rar文件常用操作

安装rar命令

sudo pacman -S rar --noconfirm
resolving dependencies...
looking for conflicting packages...

Packages (1) rar-5.5.0-1

Total Installed Size:  0.72 MiB
Net Upgrade Size:      0.00 MiB

:: Proceed with installation? [Y/n] 
(0/1) checking keys in keyring                     [----------------------]   0%
(1/1) checking keys in keyring                     [######################] 100%
(0/1) checking package integrity                   [----------------------]   0%
(1/1) checking package integrity                   [######################] 100%
(0/1) loading package files                        [----------------------]   0%
(1/1) loading package files                        [######################] 100%
(0/1) checking for file conflicts                  [----------------------]   0%
(1/1) checking for file conflicts                  [######################] 100%
(0/1) checking available disk space                [----------------------]   0%
(1/1) checking available disk space                [######################] 100%
:: Processing package changes...
(1/1) reinstalling rar                             [----------------------]   0%
(1/1) reinstalling rar                             [######################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...

rar命令常见操作

直接运行 rar 命令就会列出所有可用的操作及其说明

rar
RAR 5.50   Copyright (c) 1993-2017 Alexander Roshal   11 Aug 2017
Trial version             Type 'rar -?' for help

Usage:     rar <command> -<switch 1> -<switch N> <archive> <files...>
               <@listfiles...> <path_to_extract\>

<Commands>
  a             Add files to archive
  c             Add archive comment
  ch            Change archive parameters
  cw            Write archive comment to file
  d             Delete files from archive
  e             Extract files without archived paths
  f             Freshen files in archive
  i[par]=<str>  Find string in archives
  k             Lock archive
  l[t[a],b]     List archive contents [technical[all], bare]
  m[f]          Move to archive [files only]
  p             Print file to stdout
  r             Repair archive
  rc            Reconstruct missing volumes
  rn            Rename archived files
  rr[N]         Add data recovery record
  rv[N]         Create recovery volumes
  s[name|-]     Convert archive to or from SFX
  t             Test archive files
  u             Update files in archive
  v[t[a],b]     Verbosely list archive contents [technical[all],bare]
  x             Extract files with full path

<Switches>
  -             Stop switches scanning
  @[+]          Disable [enable] file lists
  ad            Append archive name to destination path
  ag[format]    Generate archive name using the current date
  ai            Ignore file attributes
  ap<path>      Set path inside archive
  as            Synchronize archive contents
  c-            Disable comments show
  cfg-          Disable read configuration
  cl            Convert names to lower case
  cu            Convert names to upper case
  df            Delete files after archiving
  dh            Open shared files
  ds            Disable name sort for solid archive
  dw            Wipe files after archiving
  e[+]<attr>    Set file exclude and include attributes
  ed            Do not add empty directories
  en            Do not put 'end of archive' block
  ep            Exclude paths from names
  ep1           Exclude base directory from names
  ep3           Expand paths to full including the drive letter
  f             Freshen files
  hp[password]  Encrypt both file data and headers
  ht[b|c]       Select hash type [BLAKE2,CRC32] for file checksum
  id[c,d,p,q]   Disable messages
  ierr          Send all messages to stderr
  ilog[name]    Log errors to file (registered versions only)
  inul          Disable all messages
  isnd          Enable sound
  iver          Display the version number
  k             Lock archive
  kb            Keep broken extracted files
  log[f][=name] Write names to log file
  m<0..5>       Set compression level (0-store...3-default...5-maximal)
  ma[4|5]       Specify a version of archiving format
  mc<par>       Set advanced compression parameters
  md<n>[k,m,g]  Dictionary size in KB, MB or GB
  ms[ext;ext]   Specify file types to store
  mt<threads>   Set the number of threads
  n<file>       Additionally filter included files
  n@            Read additional filter masks from stdin
  n@<list>      Read additional filter masks from list file
  o[+|-]        Set the overwrite mode
  oh            Save hard links as the link instead of the file
  oi[0-4][:min] Save identical files as references
  ol[a]         Process symbolic links as the link [absolute paths]
  or            Rename files automatically
  ow            Save or restore file owner and group
  p[password]   Set password
  p-            Do not query password
  qo[-|+]       Add quick open information [none|force]
  r             Recurse subdirectories
  r-            Disable recursion
  r0            Recurse subdirectories for wildcard names only
  rr[N]         Add data recovery record
  rv[N]         Create recovery volumes
  s[<N>,v[-],e] Create solid archive
  s-            Disable solid archiving
  sc<chr>[obj]  Specify the character set
  sfx[name]     Create SFX archive
  si[name]      Read data from standard input (stdin)
  sl<size>      Process files with size less than specified
  sm<size>      Process files with size more than specified
  t             Test files after archiving
  ta<date>      Process files modified after <date> in YYYYMMDDHHMMSS format
  tb<date>      Process files modified before <date> in YYYYMMDDHHMMSS format
  tk            Keep original archive time
  tl            Set archive time to latest file
  tn<time>      Process files newer than <time>
  to<time>      Process files older than <time>
  ts[m|c|a]     Save or restore file time (modification, creation, access)
  u             Update files
  v<size>[k,b]  Create volumes with size=<size>*1000 [*1024, *1]
  ver[n]        File version control
  vn            Use the old style volume naming scheme
  vp            Pause before each volume
  w<path>       Assign work directory
  x<file>       Exclude specified file
  x@            Read file names to exclude from stdin
  x@<list>      Exclude files listed in specified list file
  y             Assume Yes on all queries
  z[file]       Read archive comment from file

创建rar压缩包

使用 a 子命令来生成rar压缩包,其语法为(注意不要在a前面加上"-")

rar a ${rar_file} ${files_or_folds}
RAR 5.50   Copyright (c) 1993-2017 Alexander Roshal   11 Aug 2017
Trial version             Type 'rar -?' for help

Evaluation copy. Please register.

Creating archive ahk.rar

Adding    我的AHK/DesktopSwitch.ahk                                          0%  OK 
Adding    我的AHK/scripts/DesktopSwitch.ahk                                  1%  OK 
Adding    我的AHK/scripts/winautohide.ahk                                    2%  OK 
Adding    我的AHK/scripts/hotStringHelper.ahk                                2%  OK 
Adding    我的AHK/scripts/ScriptSetting v1.0.3.ahk                           3%  OK 
Adding    我的AHK/scripts/AHK-gVim-by-sfufoet.ahk                            4%  OK 
Adding    我的AHK/Recorder.zip                                               5%  OK 
Adding    我的AHK/resources/ahk.ico                                         94%  OK 
Adding    我的AHK/AHK_Script_Manager.ahk                                    95%  OK 
Adding    我的AHK/includes/LibINI.ahk                                       97%  OK 
Adding    我的AHK/template.ahk                                              97%  OK 
Adding    我的AHK/scripts                                                    OK 
Adding    我的AHK/resources                                                  OK 
Adding    我的AHK/includes                                                   OK 
Adding    我的AHK                                                            OK 
Done

查看压缩包的内容

使用 l 子命令可以查看rar压缩包中的内容,其语法为

rar l ${rar_file}
RAR 5.50   Copyright (c) 1993-2017 Alexander Roshal   11 Aug 2017
Trial version             Type 'rar -?' for help

Archive: ahk.rar
Details: RAR 5

 Attributes      Size     Date    Time   Name
----------- ---------  ---------- -----  ----
 -rw-r--r--      5244  2017-05-22 22:16  我的AHK/DesktopSwitch.ahk
 -rw-r--r--      5244  2017-05-22 22:16  我的AHK/scripts/DesktopSwitch.ahk
 -rw-r--r--      4661  2008-06-15 15:35  我的AHK/scripts/winautohide.ahk
 -rw-r--r--      2068  2012-10-10 17:39  我的AHK/scripts/hotStringHelper.ahk
 -rw-r--r--      9035  2012-10-10 19:31  我的AHK/scripts/ScriptSetting v1.0.3.ahk
 -rw-r--r--       665  2010-03-15 22:13  我的AHK/scripts/AHK-gVim-by-sfufoet.ahk
 -rw-r--r--      6792  2017-05-22 22:16  我的AHK/Recorder.zip
 -rw-r--r--    588486  2009-02-25 23:00  我的AHK/resources/ahk.ico
 -rw-r--r--      5740  2012-10-12 16:11  我的AHK/AHK_Script_Manager.ahk
 -rw-r--r--     12521  2008-10-01 00:57  我的AHK/includes/LibINI.ahk
 -rw-r--r--      1599  2013-06-15 12:49  我的AHK/template.ahk
 drwxr-xr-x         0  2017-05-22 22:16  我的AHK/scripts
 drwxr-xr-x         0  2017-05-22 22:16  我的AHK/resources
 drwxr-xr-x         0  2017-05-22 22:16  我的AHK/includes
 drwx------         0  2017-05-22 22:16  我的AHK
----------- ---------  ---------- -----  ----
               642055                    15

压缩包解压

使用 x 子命令可以将压缩包内容解压到当前目录中,比如

cd /tmp/
rar x ~/${rar_file}
ls -l
RAR 5.50   Copyright (c) 1993-2017 Alexander Roshal   11 Aug 2017
Trial version             Type 'rar -?' for help


Extracting from /home/lujun9972/ahk.rar

Creating    我的AHK                                                     OK
Extracting  我的AHK/DesktopSwitch.ahk                                        1%  OK 
Creating    我的AHK/scripts                                             OK
Extracting  我的AHK/scripts/DesktopSwitch.ahk                                3%  OK 
Extracting  我的AHK/scripts/winautohide.ahk                                  4%  OK 
Extracting  我的AHK/scripts/hotStringHelper.ahk                              5%  OK 
Extracting  我的AHK/scripts/ScriptSetting v1.0.3.ahk                         7%  OK 
Extracting  我的AHK/scripts/AHK-gVim-by-sfufoet.ahk                          7%  OK 
Extracting  我的AHK/Recorder.zip                                            13%  OK 
Creating    我的AHK/resources                                           OK
Extracting  我的AHK/resources/ahk.ico                                       95%  OK 
Extracting  我的AHK/AHK_Script_Manager.ahk                                  96%  OK 
Creating    我的AHK/includes                                            OK
Extracting  我的AHK/includes/LibINI.ahk                                     98%  OK 
Extracting  我的AHK/template.ahk                                            99%  OK 
All OK
总用量 2040
drwx------ 2 lujun9972 lujun9972      60 6月   7 15:42 babel-eM2BUh
drwx------ 2 lujun9972 lujun9972      60 6月   7 10:01 emacs1000
-rw------- 1 lujun9972 lujun9972       0 6月   7 15:42 emacsS37kuE
-rw-r--r-- 1 lujun9972 lujun9972   22010 6月   7 10:01 error.log
srw------- 1 lujun9972 lujun9972       0 6月   7 09:48 fcitx-socket-:0
drwxr-xr-x 2 lujun9972 lujun9972      60 6月   7 09:48 hsperfdata_lujun9972
-rw-r--r-- 1 lujun9972 lujun9972    4794 6月   7 09:55 info.log
drwxr-xr-x 2 lujun9972 lujun9972      60 6月   7 12:46 NutstoreTmp0xyz
-rw------- 1 lujun9972 lujun9972     147 6月   7 09:48 serverauth.5GIpkFqfHm
drwx------ 2 lujun9972 lujun9972      40 6月   7 10:01 Temp-42f248da-c89b-4663-b10a-1303fed599b9
-rw-r--r-- 1 lujun9972 lujun9972  533160 6月   7 12:53 tmp-2kn.xpi
-rw-r--r-- 1 lujun9972 lujun9972 1350380 6月   7 12:53 tmp-4dq.xpi
-rw-r--r-- 1 lujun9972 lujun9972  159994 6月   7 12:53 tmp-7xz.xpi
srwx------ 1 root      root            0 6月   7 09:34 wpa_ctrl_475-1
drwx------ 5 lujun9972 lujun9972     180 5月  22 2017 我的AHK

关于密码

当想创建带密码保护的压缩包或需要解压带密码保护的压缩包时,就需要在 a / x 子命令后再接上 -p 选项

你可以直接使用 -p<password> 的方式来直接指定密码,也可以只使用 -p ,这种情况下rar会提示用户手工输入密码

设置压缩级别

使用 -m0-m5 来设置压缩级别,其中0级表示只打包不压缩,这种压缩速度很快,而5表示最大级别的压缩,但压缩速度会很慢,默认为3级