Как протестировать, какие файлы будут скопированы с командой CP?

просто выстрел в темноте, но сделал количество файлов в сохраненном каталоге на клиентском конце, увеличенном значительно во время, которое эта проблема начала показывать сама? Сообщение

(прерванный signal=PIPE)

заставляет меня думать о канале Unix. В резервной номенклатуре, этот канал, возможно, канал имен файлов. И когда количество файлов превышает определенный размер буфера (неспособный тщательно продуманный на этом, не зная архитектур системы и сервера и клиента), можно встретиться с ошибками как таковыми. Так как эта ошибка прибывает из приложения резервного копирования, с которым я не знаком, я не могу засвидетельствовать корреляцию между сообщением и количеством файлов, но не повреждает проверять.

То, как можно обойти его, если это имеет место то есть, полностью ваше дело. Обрежьте каталог путем устранения более старых файлов или создайте подкаталоги и продвиньте определенное число файлов в эти каталоги. Или комбинация двух.

Удачи

11
04.03.2015, 00:37
5 ответов

Я не думаю, что GNU CP имеет что-то, чтобы помочь вам, если вы хотите увидеть, что это будет делать, не действуя. Если вы хотите войти в систему, которые были изменены, вы можете использовать опцию -V

cp -puv DIRECTORYA/* DIRECTORYB >copy.log

вместо CP , вы можете использовать rsync , который Это намного мощнее и установлено почти везде, за исключением низких встроенных систем (и простота установки, где он не присутствует по умолчанию).

rsync -aun DIRECTORYA/* DIRECTORYB >what-would-be-done.txt

ИЛИ

rsync -auv DIRECTORYA/* DIRECTORYB >copy.log
4
27.01.2020, 19:59

Если вы хотели запустить cp foo*bar что угодно , то вместо этого запустите echo foo*bar что угодно .

2
27.01.2020, 19:59

Вы можете использовать команду diff. У меня есть работа, которая копирует некоторые резервные копии файлов каждый день. Иногда мне нужно проверить, все ли файлы скопированы, вот синтаксис:

diff /file1/ /file2/

и, конечно, если вы хотите скопировать их, используйте:

cp -u /file1/* /file2
0
27.01.2020, 19:59

Согласно странице руководства,

-u, --update
копирование возможно только в том случае, если ИСТОЧНИК файла новее, чем файл назначения, или если файл назначения является более новым. или когда файл назначения отсутствует

эта функция объединяет два теста, один из которых тривиален для реализации в сценарии (отсутствует), а другой требует некоторой работы (новее). Вы можете сделать сценарий, который сообщает о том, что необходимо, используя comm, diff и test.

Ни одна из стандартных утилит cp не предоставляет возможности сухого выполнения операции копирования. Как было предложено, rsync - это способ сделать это с помощью общедоступной утилиты. Конечно, rsync обычно используется для копирования на основе большего количества критериев, чем просто newer или missing (также используются размер файла и временные метки). Но это можно свести к выполнению cp -u.

Для нестандартных утилит существует утилита copy, которую я написал (и, конечно, до сих пор использую) в конце 1980-х годов. Вероятно, она была вдохновлена утилитой make, поскольку первой опцией, которую я добавил, была -n.

Для приведенного примера она будет использоваться следующим образом:

$ copy -nvU DIRECTORYA/* DIRECTORYB
** copy DIRECTORYA/foo to DIRECTORYB/foo
** 1 file would be copied, 616 bytes

Дальнейшее чтение:

  • copy - утилита копирования файлов/каталогов

    -n отключает фактическое создание или изменение файлов, и (в зависимости от уровня многословности) показывает эффект, который произвела бы команда copy .
    -u копирует файлы, только если их размер или дата модификации отличаются, и ссылки только в том случае, если отличается текст ссылки.
    -U копирует только файлы, которые новее, чем конечный, или которые не существуют в месте назначения.

  • запись в журнале изменений от августа 1988:

    1988-08-16 
     * src/copy/src/copy.c: добавлены опции "-d" и "-n".
    
2
27.01.2020, 19:59

Рассмотрите возможность использования rsync вместо этого. Rsync отлично работает с локальными копиями и, конечно, может сделать то, что вы хотите, как только вы проберетесь через пятнадцать газиллионов опций, которые у него есть.

rsync -avun DIRECTORYA/ DIRECTORYB

покажет вам все, что нужно сделать, и

rsync -avu DIRECTORYA/ DIRECTORYB

сделает это.

0
27.01.2020, 19:59

Теги

Похожие вопросы