Gentoo」カテゴリーアーカイブ

Gentoo Linuxおよび他のディストリビューションを含むLinux全般についてのカテゴリーです。

tarの使い方

tar(tape archives)はファイルフォーマットの1つです。Linux/UnixではWindowsでいうところのzipのような感覚で使います。元々は磁気テープに記録する用途で使われていたフォーマットですが、現在ではgzipbzip2と組み合わせて圧縮して使う場合がほとんどです。

基本的な使い方

複数のファイルをtarにまとめる

$ tar cvf example.tar file1.txt file2.jpg file3.doc

ディレクトリーexampletarにまとめる

$ tar cvf example.tar example

tarファイルを展開する

$ tar xvf example.tar

※処理内容を表示する必要がない場合はvを除いてtar cfのように指定することもできます。
※シェルから使う場合、ワイルドカード*を使って*.txtという風にもできます。

圧縮する場合

圧縮なしのtarはファイルを1つにまとめるだけで、サイズは変わりません。(正確には少し増えます。)zipなどのように圧縮したい場合はgzipbzip2を使います。

gzipで圧縮(圧縮率は普通で、処理負荷は低め)

$ tar zcvf example.tar.gz example

.tar.gzを展開

$ tar zxvf example.tar.gz

bzip2で圧縮(圧縮率は高めで、処理負荷も高め)

$ tar jcvf example.tar.bz2 example

.tar.bz2を展開

$ tar jxvf example.tar.bz2

特定のファイルを除外して圧縮する場合

tarに圧縮する際、特定のファイルやディレクトリを除外したい場合は--excludeオプションを使います。

exampleディレクトリ内でabcでないファイル・ディレクトリを.tar.bz2に圧縮

$ tar jcvf example.tar.bz2 --exclude abc example

exampleディレクトリ内で拡張子.logのファイルを除いて.tar.gzに圧縮

$ tar zcvf example.tar.gz --exclude *.log example

アーカイブされているファイルの一覧を表示

実際に展開はしないで、ファイルの一覧のみ表示したい場合はxオプションの代わりにtオプションを使います。

$ tar ztvf example.tar.gz

アーカイブから特定のファイルもしくはディレクトリのみ取り出す

アーカイブから特定のファイルもしくはディレクトリのみ取り出したい場合は次のようなコマンドを実行します。

$ tar zxvf example.tar.gz path/to/file.txt

ワイルドカードを使って取り出すファイルを指定したい場合は--wildcardsオプションを使います。

$ tar zxvf example.tar.gz --wildcards "path/to/dir/*"

LinuxにAndroid端末を接続してMTPでファイル転送

LinuxにAndroid端末をUSB接続してファイル転送(MTP)を使いたい場合「MTPfs」というツールが使えます。

インストール(Gentoo Linux)

# emerge --ask --verbose mtpfs

使い方

マウント

# mtpfs /mnt/mount_point

アンマウント

# fusermount -u /mnt/mount_point

FUSEなのでマウント後のファイルの読み書き等は普通にできます。

リンク

MTPfs – Dual Elephants – Chris Debenhams homepage
https://www.adebenham.com/mtpfs/

GitHub – cjd/mtpfs: Filesystem to mount MTP devices directly
https://github.com/cjd/mtpfs

Unsafe load call disabled by Gentoo

Gentoo Linux上でとあるPythonスクリプトを実行したところ

Error: Unsafe load() call disabled by Gentoo. See bug #659348

のようなエラーで実行できなくなってしまいました。


以前は問題なく動いていたスクリプトです。ということで少し調べてみたところ、下の件が関係しているような感じです。

659348 – (CVE-2017-18342)
https://bugs.gentoo.org/659348

とりあえず、簡単に修正したい場合はYAMLのload()を使っている部分をfull_load()safe_load()に書き換えてみると良いみたいです。