Если в zip-архиве недостаточно места, будет ли сохранен частичный zip-архив?

В основном проблема связана с объемом оперативной памяти или чтением/записью операций ввода-вывода. Когда вы копируете файлы, данные сохраняются в вашей оперативной памяти, а затем копируются в место назначения, поскольку вы копируете большие файлы размером до 20 ГБ, проблема может быть связана с ограниченным объемом оперативной памяти, если оперативной памяти нет, то может быть узкое место. из-за возможности чтения/записи ввода-вывода (, хотя это не должно приводить к остановке ). Проверьте статистику, если есть перегрузка процессора. предпочел бы использовать команду "sar -P ALL" для проверки статистики загрузки процессора. Также попробуйте проверить статистику использования оперативной памяти.

0
11.11.2019, 03:58
1 ответ

Он не создает частичный zip-файл. Я только что сделал следующий тест.

dd if=/dev/zero of=test.dat bs=1M count=10 # create a 10MB file 
mkfs.ext4 test.dat #create ext4 filesystem in the file 
mount test.dat /mnt # mount the file to /mnt 
cd /mnt # go to the new device, which is only less than 10MB 
dd if=/dev/urandom of=test.dat bs=1M count=8 
zip test.zip test.dat  

Не удалось выполнить команду zip, так как в /mnt недостаточно места и не создан zip-файл. И если вы straceпроцесс, вы можете увидеть, что он создает временный файл со случайным именем файла во время работы:

openat(AT_FDCWD, "test.zip", O_RDONLY)  = -1 ENOENT (No such file or directory)
stat("test.dat", {st_mode=S_IFREG|0644, st_size=8388608,...}) = 0
stat("test.zip", 0x5586eb6642e0)        = -1 ENOENT (No such file or directory)
stat("test.dat", {st_mode=S_IFREG|0644, st_size=8388608,...}) = 0
openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "test.zip", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
close(3)                                = 0
stat("test.zip", {st_mode=S_IFREG|0644, st_size=0,...}) = 0
unlink("test.zip")                      = 0
getpid()                                = 16464
openat(AT_FDCWD, "zirEX4VT", O_RDWR|O_CREAT|O_EXCL, 0600) = 3

Как видно из приведенной выше трассировки, он создал файл с именем zirEX4VT, затем в конце трассировки:

write(1, "\nzip I/O error: No space left on"..., 39
zip I/O error: No space left on device) = 39
close(3)                                = 0
unlink("zirEX4VT") 

Файл zirEX4VTудален.

0
28.01.2020, 03:07

Теги

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