Linuxでtarコマンド1行だけでディレクトリを圧縮・移動・展開する方法
先日、大量のファイルを含むディレクトリをLinuxサーバー上のある場所から別の場所へ移動させる必要がありました。この作業にはいくつかの方法があります。単純にcpコマンドを使えば済む話ですが、コピー対象がデータベースのファイルだったため、少しでも不備がないよう確実に完全なコピーを行いたいと考えました。そこでインターネットで調べたところ、この問題を見事に解決してくれるbashのワンライナー(1行コマンド)を見つけたのです。
やりたいこと
今回の目的は、/var/lib/mysqlディレクトリの中身をすべて/opt/mysqlへ移動することです。
手順1:移動元のディレクトリへ移動
まず、以下のコマンドで/var/lib/mysqlディレクトリに移動します。
# cd /var/lib/mysql
手順2:ワンライナーでコピー&展開を実行
続いて、次の1行コマンドを実行します。これだけで魔法のように作業が完了します。
# tar cf - * | ( cd /opt/mysql; tar xfp - )
このコマンドの仕組み
このコマンドは、以下のような流れで動作します。
- tar cf - *:カレントディレクトリ内のすべてのファイルを1つのアーカイブにまとめ、標準出力へ書き出します(ファイルはディスク上に作成されません)。
- | ( cd /opt/mysql; tar xfp - ):パイプで渡されたアーカイブを、サブシェルが移動先ディレクトリ(/opt/mysql)に移動した上で展開します。pオプションにより、パーミッションなどの属性も保持されます。
つまり、中間的なアーカイブファイルを一切作成せずに、ディレクトリの中身を丸ごと別の場所へ高速かつ確実にコピーできるのです。所有者やパーミッションまで維持されるため、データベースファイルのように慎重な扱いが必要なデータの移動にも安心して使えます。
tarコマンドには、今回紹介した以外にも便利なオプションや活用術がたくさんあります。日常のサーバー管理にぜひ取り入れてみてください。
-
ドットファイルとは何か?MacとLinuxでの作成・管理方法を徹底解説
ドットファイル(dotfiles)は、ソフトウェア開発者としてのキャリアにおいて重要な役割を果たすファイルです。 まず、ドットファイルを活用することで作業効率が大幅に向上します。さらに、自分好みにカスタマイズした快適な開発環境を、どのマシンでも再現できるようになります。 この記事では、ドットファイルの入門として、その概要、システム上での探し方、簡単なドットファイルの作成方法を学びます。加えて、設定のカスタマイズや知識を深めるためのおすすめリソースも紹介します。 それでは始めましょう! ドットファイルとは? 多くのコンピュータソフトウェアは、設定情報をプレーンなテキスト形式のファイルやディレクト
-
Linuxでディレクトリ名を変更する方法:mvとrenameコマンドの使い方
このチュートリアルでは、Linuxでディレクトリ名を変更する方法として、「mv」コマンドと「rename」コマンドの2つの使い方を解説します。 ディレクトリ名の変更は、ファイル名の変更とほとんど変わりません。Linuxには「すべてはファイルである」という設計思想があり、ディレクトリも例外なくファイルとして扱われます。そのため、ファイルのリネームで使うテクニックの多くが、そのままディレクトリにも応用できます。 mvコマンドでディレクトリ名を変更する mv RenameDir/ renameDir mvコマンドによるディレクトリ名の変更 方法はこれだけです。シンプルにmvするだけで完了します。ただ