Так как есть известная бага с mv (и соответственно с rename в Perl)
файлов м/у разными винчестерами, то хочется реальзовать перемещение
через cp + rm
Вот код:
....
....
rename "$file1", "$file2" or do
{
logg ("Can't move file $file1 using rename : '$!'");
logg ("Trying move file $file1 with cp & rm ...");
`cp $file1 $file2`;
if ( $@ )
{
logg("Error while copying file $file1 : $@");
}
else
{
`rm $file1`;
logg("Can't remove file $file1 : $@") if $@;
}
}
....
....
Правильно ли я обрабатываю ошибки?
Системный вызов rename действительно неспособен перемещать файлы между разными файловыми системами - такая попытка приводит к ошибке с errno EXDEV.
Тем не менее, команда mv, насколько я знаю, умеет корректно обрабатывать такую ситуацию во всех вменяемых вариантах Unix, и нет необходимости в явном использовании пары cp/rm.
`mv' can move any type of file from one filesystem to another.
Prior to version `4.0' of the fileutils, `mv' could move only regular
files between filesystems.
Пожалуйста, приведи пример проблем, возникающих с mv.