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

Я создаю простой скрипт, который копирует все файлы из DIRECTORYA, которых нет в DIRECTORYB. Я делаю это с помощью команды cp:

cp -u DIRECTORYA/* DIRECTORYB 

Я хотел бы также отправить электронное письмо администратору, в котором будут перечислены файлы, которые были скопированы.

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

Может ли кто-нибудь указать мне в правильном направлении? Я изучил использование grep, но я не думаю, что это можно сделать с помощью команды cp?

5 Solutions collect form web for “Как проверить, какие файлы будут скопированы с помощью команды cp?”

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

-u , --update
копировать только тогда, когда файл SOURCE является более новым, чем файл назначения или когда отсутствует файл назначения

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

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

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

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

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

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

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

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

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

      1988-08-16    
             * src / copy / src / copy.c: добавлены опции «-d» и «-n».
    

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

Я не думаю, что у 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 

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

 diff /file1/ /file2/ 

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

 cp -u /file1/* /file2 

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

 rsync -avun DIRECTORYA/ DIRECTORYB 

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

 rsync -avu DIRECTORYA/ DIRECTORYB 

сделаю это.

  • Как скопировать файлы с консоли grub?
  • Как вы можете перемещать (или копировать) все файлы в каталог с тем же префиксом имени файла?
  • Почему этот двоичный файл передается поверх «ssh -t», который изменяется?
  • Помощь по передаче файлов с Ubuntu и ESXi
  • Перемещение файлов между Linux и OpenBSD и сохранение свойств файла
  • Копирование файлов на основе даты / времени из поднабора каталогов
  • команда cp, которая частично разрешает символические ссылки
  • Как легко скопировать файл в его исходный каталог?
  • Нужен сценарий оболочки для копирования файлов с длинными именами и именами
  • Скопировать файл из cifs mount при изменении файла
  • Как дублировать файл без копирования его данных с помощью btrfs?
  • Interesting Posts

    Openssl передает двоичную пропущенную фразу в качестве аргумента

    Какой код следует использовать для загрузки и установки моего скрипта в каталог, доступный для пользователя в PATH пользователя (без необходимости sudo)?

    Как я могу отображать 3 строки текста за один раз на 1 строку?

    @ и * в петле bash

    Пользовательская служба Linux не может быть запущена, но служба существует в / lib / systemd / system и связана

    Заменить образ в PDF с помощью командной строки

    Как запустить uTorrent?

    контролировать реферер Apache для ограничения загрузки в файле htaccess

    Разделить большой постгрессовый дамп на более мелкие файлы

    automount не работает в linux mint после обновления до rafaela

    zsh: как получить расширение файла, работающее в заявлении на печать

    Как запустить графический интерфейс на моем сервере через SSH?

    Погиб почтой с сигналом 15

    Как я могу улучшить вывод find и grep?

    Что такое стандартная команда для печати даты в формате RFC-3339?

    Linux и Unix - лучшая ОС в мире.