Как в файл CP и создают каталог, если не существует?

Та ошибка обнаруживается в функции ichiic_i2c_exec() из ichiic.c и указывает на тайм-аут, ожидающий передачи для завершения. Если бы это очень редко затем, что я не волновался бы об этом. Но я следил бы за ним в журналах (средство проверки журнала?). Если бы это начинает происходить чаще, я подозревал бы аппаратные средства.

15
задан 3 August 2009 в 17:31
7 ответов

Несколько быстрых мыслей:

  • Добавьте в mkdir-p $ (dirname ФАЙЛ)
  • Вы могли использовать канал tar для улаживания всего этого?

Править

 tar -cf archive.tar  `svn status -q | awk '{print $2}'`

Должен создать архив измененных файлов. Затем:

  tar -xf archive.tar -C /tmp/xen

должен поместить его, где Вы хотите. Если это должно быть за один шаг, это возможно также.

12
ответ дан 2 December 2019 в 20:51

rsync делает довольно простое, это инструмент, который я обычно использую для копирования всех структур каталогов:

rsync -av /home/source/svn/repo /home/dest/svn/

Это создаст repo каталог и все, что он удовлетворяет в/home/dest/svn каталоге, таким образом, у Вас будет/home/dest/svn/repo/...

Таким образом для Вас пример:

rsync -rv ./ /tmp/xen/

- a, сохранил бы метки времени и был бы рекурсивным среди прочего, 'человек rsync'.

Обновление после понимания я считал вопрос неправильно:

Подражать структуре каталогов (альтернатива tar):

rsync -av --include='*/' --exclude='*' source destination

И затем скопировать файлы прежде говорят 20 минут назад:

find . -type f -mmin -20 -print0 | xargs -0 cp --target-directory /mydestdir/
4
ответ дан 2 December 2019 в 20:51
  • 1
    That' s очевидный, но that' ll синхронизируют все, не только измененные файлы, правильно? –  CK. 3 August 2009 в 17:25
  • 2
    ой, пропущенный это –  Kyle Brandt 3 August 2009 в 17:29

Используйте "dirname" для извлечения пути "mkdir-p" для создания его, что-то как:

xargs -d \\n -l '{}' mkdir -p \`dirname '{}'\` && cp '{}' /tmp/xen/
1
ответ дан 2 December 2019 в 20:51

Я предложил бы следующее:

  • скопируйте все
  • найдите неизмененные файлы и удалите тех, оставив измененные файлы в их местах.

Между прочим, CP с флагом R копирует файлы/папки рекурсивно.

cp -R
0
ответ дан 2 December 2019 в 20:51

rsync-a не создает новые каталоги глубже, чем подробно 1, таким образом, rsync является только частичным решением и например не подходящий для меня (я погуглил для нахождения ответа, как к rsync каталогам к некоторой удаленной иерархии, когда несколько каталогов отсутствуют в середине),

Править: Я имею в виду, у меня есть исходный dir:/home/user/projects/homework/1/1.1/И я хотим к rsync это к remote:/home/user/projects/homework/1/1.1/..., но у места назначения еще нет каталога/home/user/projects/homework..., и я не хочу передавать другие подкаталоги в исходной машине, которые находятся в/home/user/projects/

Edit2: Найденный путем, с rsync - относительная опция: вышеупомянутый пример пошел бы как это:

CD/home/projects/; rsync - площадь homework/1/1.1 user@remote:/home/user/projects/

1
ответ дан 2 December 2019 в 20:51

Вот то, что острота для ссылки:

svn status -q | awk '{print $2}' | xargs tar -c | tar -xC /tmp/xen

И на английском языке:

  • получите список файлов интереса с svn status -q, который передается по каналу в...
  • awk, который извлекает столбец с filepaths: awk '{print $2}'
  • xargs используется для предоставления списка файлов к tar, который в свою очередь отправляет tarball файлов к stdout: xargs tar -c
  • который быстро повторно извлечен (-x) в целевой каталог (-C path): tar -xC /tmp/xen
2
ответ дан 2 December 2019 в 20:51
  • построить структуру каталогов в / tmp / f2 для файлов в / tmp / f

     $ cd / tmp / f /
    $ найти. -type f -exec dirname {} \; | uniq | xargs -I {} mkdir / tmp / f2 / {} -p
    
  • копировать файл в новое место назначения / tmp / f2 /

     $ cd / tmp / f
    $ найти. -type f -exec cp {} / tmp / f2 / {} -aPv \;
    
0
ответ дан 2 December 2019 в 20:51

Теги

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