Добрый день, я новичок, и давно не занимался подобными вещами, как написание скриптов.
Смысл такой, во FreeBSD нужно откопировать достаточно большое число файлов, сделать копирование нужно быстро, заблаговременно подготовившись к нему и назначенному часу.
Пришла в голову мысль написать скрипт. Так, вот главный вопрос: как сделать проверку на успешное копирование – с выводом на экран или в файл соответствующего сообщения о удачном или не удачном копировании.
В поиске нашел только информацию :
СТАТУС ЗАВЕРШЕНИЯ
Утилита cp возвращает 0 в случае успешного завершения и >0 в случае воз-
никновения ошибки.
- как вытащить это значение для последующей проверки???? и куда она его возвращает.
С Уважением.
Не бейте слишком сильно.
Несложный вопрос на тему копирования
Lupo Alberto, эм, а если у меня к примеру есть уже такой файл в каталоге и "cp" просит переписать файл или нет? тогда этот вариант не прокатывает, так как мы повиснем в бесконечном ожидании подтверждения пользователя сказать "да", значит надо будет указать доп ключик к "cp" , далее рассматриваем: вместо ALL OK указываем ALL jkashdakhd, и о чудо у нас все ок , или я что то не догоняю, и вообще ключик -a это же:
-a, --archive
По возможности сохраняет структуру и атрибуты исходных файлов прикопировании (но не сохраняет структуру каталогов). Эквивалентно з
аданиюопций -dpPR.
p.s. может не так что либо понял? если это так то поправь :-)
i2ks, это был только каркас команды. Я для бэкапов использую либо tar, либо rsync.
далее рассматриваем: вместо ALL OK указываем ALL jkashdakhd, и о чудо у нас все ок , или я что то не догоняю
Опять же повторюсь, это только пример, связка && echo "ALL OK" просто выведет в консоль ALL OK в случае удачного завершения предыдущей команды.
Чтобы команда cp не переписывала существующие файлы, у неё есть опция
...
-b, --backup
Делать резервные копии файлов, которые будут перезаписаны или удалены.
...
это был только каркас команды. Я для бэкапов использую либо tar, либо rsync.
вот это по нашему smile
Lupo Alberto, Участников форума очень много, вот поэтому и возникли вопросы, бывают же люди которые просто выполнят copy/paste, а потом будет масса вопросов почему у меня это или это не работает должным образом smile
cp -a FILE_1 FILE_2 > /dev/null 2>&1 && echo "All OK" || echo "Copy process finished with ERROR
- этот вариант нравится больше и больше подходит - но не Работает к сожалению.
выдает ошибку по : $1 : ambiguous redirect
и далее печать echo (Copy process finished with ERROR)
Что делать?
Не нужен бекап - мне нужно копирование, с заменой если файл есть.
Спасибо за внимание - признателен. Надеюсь воспользовавшись советами все же получится сделать, что бы работало)
cp -a FILE_1 FILE_2 > /dev/null 2>&1 && echo "All OK" || echo "Copy process finished with ERROR
- этот вариант нравится больше и больше подходит - но не Работает к сожалению.
выдает ошибку по : $1 : ambiguous redirect
и далее печать echo (Copy process finished with ERROR)
Что делать?
Вы последнюю кавычку не забыли?
Покажите
which cp
Чтобы файлы перезаписывались «без вопросов»:
[console]
cp -af FILE_1 FILE_2 > /dev/null 2>&1 && echo "All OK" || echo "Copy process finished with ERROR"
[/console]
В целом достаточно $$ echo "All ok" - ошибку CP выдает на экран.
В остальном, все ковычки стоят - не работает.
Рождается вопос - после выполнения как прописать - выход по нажатию клавиши ?
С уважением.
Читаю по Вашему совету ABC - замечательная штука. Очень благодарен.
machulkin, будьте более внимательны, у меня всё работает, только что проверил.
В некоторой степени это зависит от настроек оболочки.
Покажите
which cp
набрал which cp
выдал: /bin/cp
как картинку показать не понмаю ) для этого надо куда то в сеть скинуть ее п пото ссыкой вставить?
Всё должно работать:
lupo@gentoo-laptop ~ $ mkdir test
lupo@gentoo-laptop ~ $ cd test/
lupo@gentoo-laptop ~/test $ echo 123 > FILE_1.txt
lupo@gentoo-laptop ~/test $ cat FILE_1.txt
123
lupo@gentoo-laptop ~/test $ cp -af FILE_1.txt FILE_2.txt > /dev/null 2>&1 && echo "All OK" || echo "Copy process finished with ERROR"
All OK
lupo@gentoo-laptop ~/test $ ls -l
итого 8
-rw-r--r-- 1 lupo lupo 4 Окт 20 11:33 FILE_1.txt
-rw-r--r-- 1 lupo lupo 4 Окт 20 11:33 FILE_2.txt
lupo@gentoo-laptop ~/test $ cat FILE_2.txt
123
lupo@gentoo-laptop ~/test $ echo 456 >> FILE_1.txt
lupo@gentoo-laptop ~/test $ cat FILE_1.txt
123
456
lupo@gentoo-laptop ~/test $ cp -af FILE_1.txt FILE_2.txt > /dev/null 2>&1 && echo "All OK" || echo "Copy process finished with ERROR"
All OK
lupo@gentoo-laptop ~/test $ cat FILE_2.txt
123
456
machulkin, какая у вас командная оболочка?
Покажите
echo $SHELL
Покажите её файлы инициализации. В них на команду cp нигде алиасы не настроены случайно?
echo $SHELL
/bin/csh
И билин перестало работать вот, так:
cp -a FILE_1 FILE_2 && echo "All OK" || echo "Copy process finished with ERROR"
выдает сообщене : OK - не является директорией ....
а дальше:
Copy process finished with ERROR
и не копирует сответсвено.
Прости, у тебя есть аська? моя 416821493
Прости, у тебя есть аська? моя 416821493
Только jabber wink
Попробуйте поменять кавычки
cp -a FILE_1 FILE_2 && echo 'All OK' || echo 'Copy process finished with ERROR'
или так:
cp -a FILE_1 FILE_2 && echo All_OK || echo Copy_process_finished_with_ERROR
уф ))) нет не получается.
Причем однозначно - вот 10 мнут назад работало!!!!
#!/usr/local/bn/bash
cp -i -v /user/home/file /user/home/file2 $$ echo 'ALL OK' || echo 'error'
exit
ответ на исполнение:
cp: ALL OK is not a directory
error
Я просил внимательно читать wink
У меня &&, а не $$!
черт)))) экранчик маленький. щас буду пробовать. oO