Хорошо, поэтому у меня есть 6.5 миллионов изображений в папке, и мне нужно, чтобы они были перемещены как можно скорее. Я буду перемещать их в свою структуру папок, но сначала я должен заставить их уйти с этого сервера.«Ошибка копирования: слишком большой файл» в perl
Я пробовал rsync и cp и всевозможные другие инструменты, но они всегда заканчиваются ошибками. Поэтому я написал perl-скрипт, чтобы вытащить информацию более прямым способом. Использование opendir и подсчет всех файлов отлично. Он может подсчитать их всего за 10 секунд. Теперь я пытаюсь просто поднять свой сценарий еще на одну ступень и фактически переместить файлы, и я получаю сообщение об ошибке «Файл слишком большой». Это должно быть какая-то ложная ошибка, так как сами файлы все довольно малы.
#!/usr/bin/perl
#############################################
# CopyFilesLite
# Russell Perkins
# 7/12/2010
#
# Tool is used to copy millions of files
# while using as little memory as possible.
#############################################
use strict;
use warnings;
use File::Copy;
#dir1, dir2 passed from command line
my $dir1 = shift;
my $dir2 = shift;
#Varibles to keep count of things
my $count = 0;
my $cnt_FileExsists = 0;
my $cnt_FileCopied = 0;
#simple error checking and validation
die "Usage: $0 directory1 directory2\n" unless defined $dir2;
die "Not a directory: $dir1\n" unless -d $dir1;
die "Not a directory: $dir2\n" unless -d $dir2;
opendir DIR, "$dir1" or die "Could not open $dir1: $!\n";
while (my $file = readdir DIR){
if (-e $dir2 .'/' . $file){
#print $file . " exsists in " . $dir2 . "\n"; #debuging
$cnt_FileExsists++;
}else{
copy($dir1 . '/' . $file,$dir2 . '/' . $file) or die "Copy failed: $!";
$cnt_FileCopied++;
#print $file . " does not exsists in " . $dir2 . "\n"; #debuging
}
$count++;
}
closedir DIR;
#ToDo: Clean up output.
print "Total files: $count\nFiles not copied: $cnt_FileExsists\nFiles Copied: $cnt_FileCopied\n\n";
Значит, кто-нибудь из вас столкнулся с этим раньше? Что может вызвать это и как оно может быть исправлено?
nfs имеет жесткий предел для максимальных файлов, которые могут находиться в каталоге. –