cp -al の等価2006年08月04日 11時30分04秒

freebsd-hackers メーリングリストで、cp -al の拡張をした人が投稿していた。-a が -all で -l が -link のオプションとのこと。

cp -al /from/ /to/

で、全てをハードリンクを使って複製したいらしい。

個人的には、必要のないオプションだと思った。案の定、様々な代替案が投稿された。


find . -depth |cpio -pdlmv $dest


pax -rwl -pe /from /to

などだ。cpio や pax は普段使わないコマンドだが、強力なのは知っていた。

その後、インターネットや保存したメールを見られない状態のときに、これらと同じことがしたくなったのだ。ところが、cpio や pax は普段は使わないので、man を見ても必要なオプションが見つけられない。何せ、指定できるオプションが豊富だから。

しかし、困ったことに man を軽く眺めても見つけられない。このまま、man を睨んでいても、時間の無駄な気がしてきた。そこで諦めて、力技でいくことにした。


cd /from/
sh -c 'for i in `find . -type d`; do mkdir /from/$i; done'
sh -c 'for i in `find . -type f`; do ln $i /from/$i; done'

もう少し、cpio や pax のオプションまで気を使って見ておけば良かったと後悔した日だった。でも、cp に -al は無くてもいい。