ファイルは異なるパーティション間でも移動できたけど、ディレクトリはダメだった。perldoc File::Copyしても、それらしい記述は見つけられなかったんだけどどうなんだろ。
パーティションの状態
/rootと/tmpが/dev/md0、/var/は/dev/md3。
# df -k Filesystem 1k-blocks Used Available Use% Mounted on /dev/md0 4126976 2664876 1252460 69% / /dev/md1 4127040 1711348 2206048 44% /home none 515328 0 515328 0% /dev/shm /dev/md3 8364788 2320100 5619776 30% /var
move-test.pl
#!/usr/bin/perl use File::Copy; use strict; use warnings; my %filetype_of = ( 'file' => { '/root/file1' => '/tmp/file1', '/root/file2' => '/var/file2', }, 'dir', => { '/root/dir1' => '/tmp/dir1', '/root/dir2' => '/var/dir2', }, ); for my $key (sort keys %filetype_of) { for my $src (sort keys %{$filetype_of{$key}}) { system("/bin/touch $src") if !-f $src and $key eq 'file'; system("/bin/mkdir $src") if !-d $src and $key eq 'dir'; my $dst = $filetype_of{$key}->{$src}; move $src, $dst or print "$key: Can't move $src to $dst\n"; } }
テスト
# perl move-test.pl dir: Can't move /root/dir2 to /var/dir2
/root/dir2 => /var/dir2のmoveだけが失敗した。