Используя обычную командную строку zip
инструмент, я не думаю, что можно избежать отдельного извлечения и обновить команды.
source_zip=$PWD/sourceZip.zip
target_zip=$PWD/targetZip.zip
temp_dir=$(mktemp -dt)
( cd "$temp_dir"
unzip "$source_zip"
zip -g "$targetZip" .
# or if you want just the two files: zip -g "$targetZip" textFile.txt binFile.bin
)
rm -rf "$temp_dir"
Существуют другие языки с более удобными библиотеками управления zip-файлом. Например, Perl с Архивом:: Zip. Проверка ошибок опущена.
use Archive::Zip;
my $source_zip = Archive::Zip->new("sourceZip.zip");
my $target_zip = Archive::Zip->new("targetZip.zip");
for my $member ($source_zip->members()) {
# or (map {$source_zip->memberNamed($_)} ("textFile.txt", "binFile.bin"))
$target_zip->addMember($member);
}
$target_zip->overwrite();
Иначе должен смонтировать zip-файлы как каталоги. Монтирование любого из zip-файлов достаточно, можно использовать zip
или unzip
с другой стороны. Avfs оказывает поддержку только для чтения для многих форматов архива.
mountavfs
target_zip=$PWD/targetZip.zip
(cd "$HOME/.avfs$PWD/sourceZip.zip#" &&
zip -g "$target_zip" .) # or list the files, as above
umountavfs
Zip предохранителя обеспечивает доступ для чтения-записи для архивирования архивов, таким образом, можно скопировать файлы с cp
.
source_dir=$(mktemp -dt)
target_dir=$(mktemp -dt)
fuse-zip sourceZip.zip "$source_dir"
fuse-zip targetZip.zip "$target_dir"
cp -Rp "$source_dir/." "$target_dir" # or list the files, as above
fusermount -u "$source_dir"
fusermount -u "$target_dir"
rmdir "$source_dir" "$target_dir"
Предупреждение: Я ввел эти сценарии непосредственно в моем браузере. Используйте на Ваш собственный риск.
Администратор сети пытается переопределить Ваши статические параметры конфигурации. Как базируются или sudo пользователь, выполненный:
service NetworkManager stop
Если у Вас нет сервиса, попробуйте:
/etc/init.d/NetworkManager stop
Кроме того, можно установить статические интерфейсы, которые не будут управляться NetworkManager, который является тем, что я сделал в своих конфигурациях CentOS просто путем добавления строки
NM_CONTROLLED=no
к Вашим статическим файлам конфигурации. Ваши статические конфигурационные файлы не имеют той строки, означая, что NetworkManager попытается управлять теми интерфейсами вместо того, чтобы игнорировать их.
Посмотрите здесь для ссылки при отключении и/или удалении NM.
Разве этот администратор сети не конфликтует со статическими файлами конфигурации сети? Отключите администратора сети при выполнении CentOS на сервере NM глуп и нет никакой потребности иметь "динамично" изменяющие настройки сети.
ntsysv
. Иначе/etc/resolv.conf переформатирован при запуске. – Yohann 14.03.2012, 16:34