Больше 10 лет я использовал эту стратегию скопировать большое количество файлов между файловыми системами UNIX:
cd source_directory
find . -depth -print | cpio -pdm /path/to/destination_directory
Это работает как чемпион. Однако я теперь получаю эту ошибку от cpio:
cpio: WARNING! These file names were not selected:
(long list of files here...)
Исходный каталог находится на OSX 10.5, и целевой каталог является файловой системой NFS с сервера OpenSolaris. Копирование по NFS никогда не было проблемой в прошлом. Нет ничего странного об именах файлов, означая, что нет специальных символов или чего-либо как этот.
Какие-либо идеи?
Исходная иерархия каталогов использует чем-то при выполнении копии? Я смог выявить то сообщение об ошибке (и некоторые другие), когда я даю ему пути, которые не существуют:
% ls foo bar baz
ls: bar: No such file or directory
ls: foo: No such file or directory
baz
!1% # Only baz exists.
!1% printf %s\\\\n foo bar baz | cpio -odm > /dev/null
cpio: Unable to access foo <No such file or directory>
cpio: Unable to access bar <No such file or directory>
cpio: WARNING! These file names were not selected:
foo
bar
Но я также получаю это ранее, другой, объяснительные сообщения об ошибках. Возможно, Вы получаете столь многих из того последнего, что Вы не видите первого. Вы могли попытаться сохранить вывод с cmd 2> logfile
сохранить вывод stderr в файл.
Вы могли закончить в этой той же ситуации, если по крайней мере еще один процесс удаляет файл между тем, когда находят печать его путями и когда cpio открывает его для чтения. Это - состояние состязания. Гонка запускается находкой (когда она читает каталог, находя, что конкретный путь существует (в конечном счете печать его пути)), и соперники являются cpio (победы, когда она успешно открывает путь для чтения) и некоторый другой процесс (победы, когда она удаляет путь, прежде чем cpio откроет ее).