長いファイル名の扱いというのはどこに行っても面倒な部分を内包していて、今まで気づいていなかっただけで実は今までも地雷を踏んでいたのではないかと思うようなことがあった。
gnu tar と posix tar とで長いファイル名の扱いが違う?のかな? linux の tar と、IBM の UNIX である AIX の tar で長いファイル名の扱いが違ったのでその話。
長いファイル名、以下のようなのがあったとして
$ ls /tmp/test/The_quick_brown_fox_jumps_over_the_lazy_dog/The_quick_brown_fox_jumps_over_the_lazy_dog_1234567890.txt
$ /opt/freeware/bin/tar cvf /tmp/longfile02.tar /tmp/test/The_quick_brown_fox_jumps_over_the_lazy_dog/The_quick_brown_fox_jumps_over_the_lazy_dog_1234567890.txt
AIX 付属の tar で見る
$ tar tvf /tmp/longfile02.tar ?rw-r--r-- 4001 4000 112 Dec 01 00:03:17 2014 ././@LongLink -rw-r--r-- 4001 4000 242 Dec 01 00:01:43 2014 tmp/test/The_quick_brown_fox_jumps_over_the_lazy_dog/The_quick_brown_fox_jumps_over_the_lazy_dog_123
ファイル名が途中で切れてる!そんで、@LongLink というファイル?が追加されてる。このファイルを gnu tar で見ると正常。
$ /opt/freeware/bin/tar tvf /tmp/logf02.tar -rw-r--r-- 4001/4000 242 2014-12-01 00:01:43 tmp/test/The_quick_brown_fox_jumps_over_the_lazy_dog/The_quick_brown_fox_jumps_over_the_lazy_dog_1234567890.txt
つうわけで、gnu tar で操作したアーカイブが紛れ込んでそうな環境では常に gnu tar を使ってたほうが安心じゃないかなって思いました。