Bash: Скопируйте названные файлы рекурсивно, сохранив структуру папок

По сравнению с предыдущим годом работают на Linux? Если так, проверьте, имеет ли jBoss полномочия записи по/tmp...

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

-Djava.io.tmpdir=yourTempDirectory

, где Ваш временный каталог является абсолютным адресом каталога Temp, который Вы создали.

97
задан Jonathan Leffler 3 November 2015 в 04:12
поделиться

6 ответов

Вы пробовали использовать параметр --parents? Я не знаю, поддерживает ли это OS X, но это работает в Linux.

cp --parents src/prog.js images/icon.jpg /tmp/package

Если это не работает в OS X, попробуйте

rsync -R src/prog.js images/icon.jpg /tmp/package

, как было предложено aif.

149
ответ дан 24 November 2019 в 05:25
поделиться

В одну сторону:

tar cf - <files> | (cd /dest; tar xf -)
22
ответ дан 24 November 2019 в 05:25
поделиться

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

cd /source;
find . -print | cpio -pvdmB /target

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

Параметр «-p» предназначен для режима «сквозной» (в отличие от «-i» для ввода или '-o' для вывода). '-V' является подробным (перечислить файлы по мере их обработки). '-M' сохраняет время модификации. «-B» означает использование «больших блоков» (где большие блоки имеют размер 5120 байт вместо 512 байт); возможно, в наши дни это не действует.

17
ответ дан 24 November 2019 в 05:25
поделиться

Параметр -R rsync сделает то, что вы ожидаете. Это очень многофункциональный копировальный аппарат. Например:

$ rsync -Rv src/prog.js images/icon.jpg /tmp/package/
images/
images/icon.jpg
src/
src/prog.js

sent 197 bytes  received 76 bytes  546.00 bytes/sec
total size is 0  speedup is 0.00

Примеры результатов:

$ find /tmp/package
/tmp/package
/tmp/package/images
/tmp/package/images/icon.jpg
/tmp/package/src
/tmp/package/src/prog.js
15
ответ дан 24 November 2019 в 05:25
поделиться
2
ответ дан 24 November 2019 в 05:25
поделиться

Попробуйте ...

for f in src/*.js; do cp $f /tmp/package/$f; done

, поэтому для того, что вы делали изначально ...

for f in `echo "src/prog.js images/icon.jpg"`; do cp $f /tmp/package/$f; done

или

v="src/prog.js images/icon.jpg"; for f in $v; do cp $f /tmp/package/$f; done
1
ответ дан 24 November 2019 в 05:25
поделиться