RAR for Linux のインストールと使い方

WinRARのLinux版。

公式サイト
http://www.rarlab.com/

インストール

インストールするには、公式サイトからファイルをダウンロードして展開するだけ。

コマンドライン版を試してみる。

$ wget http://www.rarlab.com/rar/rarlinux-5.0.1.tar.gz

展開して中身を確認

$ tar zxf rarlinux-5.0.1.tar.gz
$ cd rar
$ ls
acknow.txt  default.sfx*  license.txt  makefile  order.htm  rar*  rar.txt  rar_static*  rarfiles.lst  readme.txt  unrar*  whatsnew.txt

license.txt にライセンスについて記載がある。

40日間は評価期間、以降はライセンスを購入して下さいというのは、Win版と同じと思われる。

rar/unrarコマンドを/usr/local/bin 以下などにコピーして利用する。


とりあえずヘルプを見ようとコマンドを実行してみるとエラー発生

./rar: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

ライブラリが足りない模様。

「libstdc++-devel」をyumでインストールすれば良いものの、32bit/64bitがある。

libstdc++-devel.i686 : Header files and libraries for C++ development
libstdc++-devel.x86_64 : Header files and libraries for C++ development

rarで必要とされているのは32bitのようなので、64bitOSの場合は明示的にアーキテクチャを指定する。

# yum install libstdc++-devel.i686   ←「.i686」を省略すると x86_64 のパッケージが対象となる

ヘルプを確認

$ ./rar --help

RAR 5.01   Copyright (c) 1993-2013 Alexander Roshal   1 Dec 2013
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
  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            Save symbolic links as the link instead of the file
  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>[N]  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 -rr2p -ep1 -phoge test.rar ./aaa ./bbb

RAR 5.01   Copyright (c) 1993-2013 Alexander Roshal   1 Dec 2013
Trial version             Type RAR -? for help

Evaluation copy. Please register.

Creating archive test.rar

Adding    ./aaa                                                       OK
Adding    ./bbb/ccc                                                   OK
Adding    ./bbb                                                       OK
Adding data recovery record
Done

上記では、ファイルaaaとディレクトリbbbをtest.rarに圧縮している。

2%のリカバリレコードを付加し、展開時にパスワード hoge を要求する。

圧縮時に絶対パスで圧縮しないオプションを付加。
(test.rar と同じディレクトリに aaaと bbb が展開される)

展開

展開せず中身を確認(ファイル名のみ)

$ ./unrar lb test.rar
aaa
bbb/ccc
bbb


展開せず中身を確認(ファイル名とパーミッション等)

$ ./unrar lt test.rar

UNRAR 5.01 freeware      Copyright (c) 1993-2013 Alexander Roshal

Archive: test.rar
Details: RAR 4, recovery record

        Name: aaa
        Type: File
        Size: 1670493
 Packed size: 35632
       Ratio: 2%
       mtime: 2014-04-15 22:21,000
  Attributes: -rw-rw-r--
       CRC32: F086EE35
     Host OS: Unix
 Compression: RAR 3.0(v29) -m3 -md=2M
       Flags: encrypted

        Name: bbb/ccc
        Type: File
        Size: 242156
 Packed size: 4352
       Ratio: 1%
       mtime: 2014-04-15 22:21,000
  Attributes: -rw-rw-r--
       CRC32: 734C538A
     Host OS: Unix
 Compression: RAR 3.0(v29) -m3 -md=2M
       Flags: encrypted

        Name: bbb
        Type: Directory
       mtime: 2014-04-15 22:13,000
  Attributes: drwxrwxr-x
       CRC32: 00000000
     Host OS: Unix
 Compression: RAR 3.0(v29) -m0 -md=0K


展開する(パスワードを要求される)

$ ./unrar x test.rar

UNRAR 5.01 freeware      Copyright (c) 1993-2013 Alexander Roshal


Extracting from test.rar

Enter password (will not be echoed) for aaa:

Extracting  aaa                                                       OK
bbb/ccc - use current password ? [Y]es, [N]o, [A]ll A

Creating    bbb                                                       OK
Extracting  bbb/ccc                                                   OK
All OK


展開したものを確認

$ ls
aaa  bbb/  test.rar