Я должен сделать копию содержания одного каталога другому.
Я должен скопировать только 1 подпапку.
Например; если мне назвали папку "от" и хочу скопировать один из, его - подпапки (со всем материалом в нем), это называют "21-01-2015" <-это смены имени каждый день, и я хочу выполнить это через cronjob к папке "к"
+ from
- 21-01-2015 (**this name changes all the time**)
- month (**this stays always the same**)
Я в настоящее время использую эту команду: cp -a /path/from /path/to
но эта команда делает копию папки "от" наряду со всем материалом в нем...
таким образом, то, когда Вы - внутренняя папка "к" нему, становится чем-то вроде этого:
+ to
+ from
- 21-01-2015
- month
вместо того, как мне нужен он, который является
+ to
- 21-01-2015
как я могу достигнуть чего-то вроде этого?
спасибо
CP-a/path/from /*/path/to скопирует содержание/path/from, не каталог, если Вы имеете другие файлы/директоров в/path/from, и только хотите скопировать тот, необходимо будет придумать шаблон для соответствия ему.
Можно попробовать эту команду:
cp -a from/$(ls from | grep ^[0-9][0-9]) to/
проблема с CP команды-a/path/from/path/to состоит в том, что оно сделает рекурсивную копию, что означает, что оно скопирует исходный каталог (в Вашем случае "/path/from") и все под ним.
то, что Вы хотите, является командой для рекурсивного копирования "21-01-2015" каталог в "от". Команда, которую необходимо использовать:
cp -a /path/from/21-01-2015 /path/to
Примечание, что Вы упомянули, что каталог в "от" меняет имена. Вы не упомянули, остается ли каталог от предыдущего задания позади. Если/path/from содержит несколько подкаталогов, и Вы используете подстановочный знак в своей команде, которую Вы скопируете по всем каталогам, которые Вы уже скопировали (это может или не может быть тем, что Вы хотите). Если Вы не заботитесь о копировании по подкаталогам, Вы уже скопировали в предыдущем задании крона тогда, Вы могли использовать следующую команду для копирования любого файла или папки, которая запускается с числа (это, конечно, НЕ скопирует "месяц")
cp -a /path/from/[0-9]* /path/to
, Если Вы не захотите копировать по каждому подкаталогу "с" каждого раза выполнения cronjob (т.е. Вы просто хотите скопировать по файлам, которые были добавлены то начиная с последнего cronjob) Вы будете лучше обслуживаться с помощью rsync. rsync управляют, чтобы Вы использовали бы, будет что-то подобное:
rsync -avz --exclude 'month' /path/from/ /path/to/
, но проверьте страницу справочника на корректные опции сделать точно, что Вы хотите (например, Вы возможно не хотите подробный на в производстве).