Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование в *nix (http://forum.oszone.net/forumdisplay.php?f=35)
-   -   Помогите написать скрипт копирования (http://forum.oszone.net/showthread.php?t=74113)

Filariel 06-11-2006 15:19 507621

Помогите написать скрипт копирования
 
У меня есть одна папка которую я копирую в другу вместе со всем ее содержимым.
И в ней есть ссылка на папку и ее я не хочу копировать так как начинает тянуть всю папку на которую эта ссылка ссылается.
Копирую таким образом cp -ipfdrR /share/test/* /mnt/shara_pcard2/test/
Подскажите как сделать так что бы копировалось все кроме этой ссылки !?

ruslandh 06-11-2006 16:01 507634

Попробуем разобрать ключики :
cp -ipfdrR
Цитата:

Цитата man cp
-i Спрашивает, нужно ли перезаписывать существующие файлы, в которые
происходит копирование. (Запрос выдается на стандартный вывод ошибок, а
ответ читается со стандартного ввода. Копирование осуществляется только
в случае положительного ответа).

-p Сохраняет исходные параметры файла, такие как владелец, группа, права
доступа (включая suid и sgid биты), время последней модификации и время
последнего доступа к файлу. В случае, если установка владельца или
группы приводит к ошибке, suid и sgid биты сбрасываются. (Заметим, что
впоследствии исходный файл и его копия могут иметь разное время
последнего доступа, так как операция копирования является доступом к
исходному файлу).

-f Если требуется, удаляет существующие файлы, в которые происходит
копирование. (См. выше)

-d Копирует символьные ссылки как символьные ссылки, а не файлы, на которые
они указывают, и сохраняет жесткие ссылки между исходными файлами в
копиях.

В file-utils 4.0 длинная опция --no-dereference была синонимом для опции
-d, но в file-utils 4.1 она является синонимом для опции -P, в то время
как опция -d эквивалентна опциям --no-dereference --preserve=links.


-R Копировать каталоги рекурсивно; правильно обрабатывать ситуации, когда
попадаются объекты, не являющиеся обычными файлами или каталогами.
(Так, копией FIFO или специального файла будет также являться FIFO или
специальный файл).

-r Копировать каталоги рекурсивно; выполнять какие-то, неопределенные
стандартом действия, когда попадаются объекты, не являющиеся обычными
файлами или каталогами. (Так, разрешается, и фактически одобряется,
наличие опции -r как синонима для -R. Однако, глупое поведение, которое
проявляет версия cp в GNU 4.0 не запрещается.)

ПОДРОБНОСТИ ВЕРСИИ GNU

-i, --interactive
Спрашивает, нужно ли перезаписывать существующие обычные файлы.

-f, --force
Удаляет существующие файлы в случае возникновения ошибки при открытии их
на чтение и никогда не спрашивает подтверждения перед тем как это
сделать. (Такое поведение начинается с версии file-utils 4.1. В file-
utils 4.0 эта опция была эквивалентна новой опции --remove-destination.)

-r В file-utils 4.1: синоним опции -R. В file-utils 4.0: Копирует каталоги
рекурсивно, копирует любые не-каталоги и не символьные ссылки (то есть
FIFO и специальные файлы), как если бы они были обычными файлами. Это
глупое поведение можно получить в file-utils 4.1 если указать опцию
--copy-contents.

-R, --recursive
Копирует каталоги рекурсивно, защищая не-каталоги.

Чего не хватает :
Цитата:

Цитата man cp
ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ POSIX 2003
Стандарт POSIX 1003.1-2003 добавляет три опции, которые определяют как
управлять символьными ссылками. Когда выполняется нерекурсивное копирование,
символьные ссылки разименовываются (берутся те объекты на которые они
указывают, вместо самой ссылки -- прим.пер.). Когда выполняется рекурсивное
копирование с использованием опции -r, результаты зависят от реализации. Когда
выполняется рекурсивное копирование с использованием опции -R:

-H Разименовывает символьные ссылки, указанные в списке параметров. Не
разименовывает символьные ссылки, которые встречаются во время
рекурсивного копирования, а просто копирует их.

-L Разименовывает все символьные ссылки, как заданные в списке параметров
так и встретившиеся во время рекурсивного копирования.

-P Не разименовывает никакие символьные ссылки, ни заданные в списке
параметров, ни встретившиеся во время рекурсивного копирования. Просто
копирует их как символьные ссылки.

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


Filariel 06-11-2006 17:08 507668

Спасибо буду разбиратся

krestik 17-11-2006 11:09 513150

помогите написать скрипт который бы логинился на ftp и копировал от туда папку с текущей датой (например pub/ftpshare/DB/11_17) и отправлял содержимое этой папки по электронной почте

hasherfrog 17-11-2006 11:25 513165

krestik
Используйте wget для получения файла. Что для отправки - не знаю, не занимался подобным.

krestik 17-11-2006 11:36 513172

понял. уже капаю в этом направлении.Но как подставить текущую дату???

krestik 17-11-2006 13:02 513226

командой "date +%m_%d" я могу получить текущую дату. Как эту дату присвоить переменной в скрипте? И соответственно синтаксис написания пути cp pub/ftpshare/DB/"эта переменная"???

BuGfiX 17-11-2006 16:38 513325

Цитата:

Как эту дату присвоить переменной в скрипте?
Код:

DATE=`/bin/date "+%m_%d"`
Цитата:

синтаксис написания пути
Код:

cp pub/ftpshare/DB/$DATE
А еще по поводу решения задач такого типа можете посмотреть в сторону expect (autoexpect).


Время: 05:18.

Время: 05:18.
© OSzone.net 2001-