cpコマンドで複数のファイルを一括でシムリンク

* 本ページはプロモーションが含まれています

Linux/Macなどでシンボリックシンク(シムリンク)を張る際に、通常だと”ln -s file1 files2″みたいに行います。
しかし、複数のシムリンクを作成する際に、lnではワイルドカードが使えないので、一つ一つでの作業となり面倒です。

達人になると、findとxargもしくはforループなどのインラインコマンドやシェルスクリプト,perl,rubyで簡単なプログラムを書くのでしょうけど、もっと簡単な方法はないのだろうかと思っていました。

(CentOS6.xのLinuxの場合で説明)
たとえば、Muninのプラグインファイルをシムリンク張る際に、
大元のファイルは、/usr/share/munin/plugis/に入っており、この中から有効にしたいファイルを/etc/munin/plugins/へシムリンクを作成します。
今回は、postgress関連のシムリンクを張ってみます。

まず、postgress関連のファイルを確認すると、

$ ls /usr/share/munin/plugins/postgres_*
/usr/share/munin/plugins/postgres_autovacuum
/usr/share/munin/plugins/postgres_bgwriter
/usr/share/munin/plugins/postgres_cache_
/usr/share/munin/plugins/postgres_checkpoints
/usr/share/munin/plugins/postgres_connections_
/usr/share/munin/plugins/postgres_connections_db
/usr/share/munin/plugins/postgres_locks_
/usr/share/munin/plugins/postgres_oldest_prepared_xact_
/usr/share/munin/plugins/postgres_prepared_xacts_
/usr/share/munin/plugins/postgres_querylength_
/usr/share/munin/plugins/postgres_scans_
/usr/share/munin/plugins/postgres_size_
/usr/share/munin/plugins/postgres_streaming_
/usr/share/munin/plugins/postgres_transactions_
/usr/share/munin/plugins/postgres_tuples_
/usr/share/munin/plugins/postgres_users
/usr/share/munin/plugins/postgres_xlog

これらのファイル全部を一つ一つlnコマンドでシムリンク張るのは、かなり面倒ですよね。

そこで、Linux/Unixを触ったことがある方なら誰でもご存じのcpを使います。
そう、ファイルをコピーするコマンドのcpです。

では、早速作業してみましょう。

# cd /etc/munin/plugins/
# cp -s /usr/share/munin/plugins/postgres* .

 cpコマンドに-sの引数をつけてやるだけで、あら不思議、簡単にシムリンクが張れます。

尚、シムリンク作成出来るcpは、FreeBSDやSoralisなど違うプラットフォームまたはバージョンによっては、使えないかもしれませんので、バージョンを確認し、man cpで-sが使えるか確認しましょう。

$ cp –version
cp (GNU coreutils) 8.4

作業後に、シムリンクが張れているか確認してみると、まとめてシムリンクが張られ作成されることが確認できました↓

postgres_autovacuum -> /usr/share/munin/plugins/postgres_autovacuum
postgres_bgwriter -> /usr/share/munin/plugins/postgres_bgwriter
postgres_cache_ -> /usr/share/munin/plugins/postgres_cache_
postgres_checkpoints -> /usr/share/munin/plugins/postgres_checkpoints
postgres_connections_ -> /usr/share/munin/plugins/postgres_connections_
postgres_connections_db -> /usr/share/munin/plugins/postgres_connections_db
postgres_locks_ -> /usr/share/munin/plugins/postgres_locks_
postgres_oldest_prepared_xact_ -> /usr/share/munin/plugins/postgres_oldest_prepared_xact_
postgres_prepared_xacts_ -> /usr/share/munin/plugins/postgres_prepared_xacts_
postgres_querylength_ -> /usr/share/munin/plugins/postgres_querylength_
postgres_scans_ -> /usr/share/munin/plugins/postgres_scans_
postgres_size_ -> /usr/share/munin/plugins/postgres_size_
postgres_streaming_ -> /usr/share/munin/plugins/postgres_streaming_
postgres_transactions_ -> /usr/share/munin/plugins/postgres_transactions_
postgres_tuples_ -> /usr/share/munin/plugins/postgres_tuples_
postgres_users -> /usr/share/munin/plugins/postgres_users
postgres_xlog -> /usr/share/munin/plugins/postgres_xlog

Linux/Unixを10年以上も触っているに、cpコマンドでシムリンクが作成できるのを初めて知りました。お恥ずかしい・・