Распаковать файл gzip на месте

То, как отображается командная строка, определяется переменной окружения PS1. Похоже, что у вас было пользовательское значение для этой переменной, а после перестройки сервера оно вернулось к значению по умолчанию. Если вы предпочитаете видеть подсказку так, как она была раньше, вы можете изменить эту переменную.

Не беспокойтесь о том, правильно ли восстановлены ваши учетные записи cPanel, основываясь на этом.

Вот настройки на моем сервере:

sree@singa01 [/tmp]$ echo $PS1
\u@\h [\w]$

Посмотрите, как я изменил положение квадратных скобок в подсказке, изменив их положение в переменной PS1:

sree@singa01 [/tmp]$ export PS1="[\u@\h \w]$ "
[sree@singa01 /tmp]$

Вы можете прочитать краткие руководства по двум ссылкам ниже и изменить подсказку по своему усмотрению:

Ссылка 1

Ссылка 2

Ссылка 3

PS1 - подсказка взаимодействия по умолчанию

2
31.01.2017, 15:23
3 ответа

Можно ли распаковать его «при удалении»?

Это то, о чем вы просили. Но это может быть не то, что вам действительно нужно. Используйте на свой риск.

Если файл размером 420 ГБ хранится в файловой системе с разреженными файлами и поддержкой отверстий (например, ext4 , xfs , но не ntfs ), он будет можно прочитать файл и освободить прочитанные блоки с помощью fallocate --punch-hole . Однако, если процесс отменен по какой-либо причине, восстановления может не быть, так как все, что осталось, - это наполовину удаленный, наполовину несжатый файл. Не пытайтесь сделать это, не сделав сначала еще одну копию исходного файла.

Очень грубое подтверждение концепции:

# dd if=/dev/urandom bs=1M count=6000 | pigz --fast > urandom.img.gz
6000+0 records in
6000+0 records out
6291456000 bytes (6.3 GB, 5.9 GiB) copied, 52.2806 s, 120 MB/s
# df -h urandom.img.gz 
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           7.9G  6.0G  2.0G  76% /dev/shm

файл urandom.img.gz занимает 76% доступного пространства, поэтому его нельзя распаковать напрямую. Перенесите несжатый результат в md5sum , чтобы мы могли проверить позже:

# gunzip < urandom.img.gz | md5sum
bc5ed6284fd2d2161296363edaea5a6d  -

Распаковать при перфорации: (это очень грубо, без какой-либо проверки ошибок)

total=$(stat --format='%s' urandom.img.gz) # bytes
total=$((1+$total/1024/1024)) # MiB
for ((offset=0; offset < $total; offset++))
do
    # read block
    dd bs=1M skip=$offset count=1 if=urandom.img.gz 2> /dev/null
    # delete (punch-hole) blocks we read
    fallocate --punch-hole --offset="$offset"MiB --length=1MiB urandom.img.gz
done | gunzip > urandom.img

Результат:

# ls -alh *
-rw-r--r-- 1 root root 5.9G Jan 31 15:14 urandom.img
-rw-r--r-- 1 root root 5.9G Jan 31 15:14 urandom.img.gz
# du -hcs *
5.9G    urandom.img
0       urandom.img.gz
5.9G    total
# md5sum urandom.img
bc5ed6284fd2d2161296363edaea5a6d  urandom.img

Контрольная сумма совпадает, размер исходного файла уменьшился с 6 ГБ до 0, пока он был распакован на месте.

Но есть так много вещей, которые могут пойти не так ... лучше не делайте этого вообще или, если вам действительно нужно, по крайней мере, используйте программу, которая выполняет более разумную проверку ошибок. Приведенный выше цикл вовсе не гарантирует, что данные были прочитаны и обработаны до их удаления. Если dd или gunzip по какой-либо причине возвращает ошибку, fallocate по-прежнему с радостью ее отбрасывает ... поэтому, если вы должны использовать этот подход, лучше напишите более разумный ] читать и есть .

8
27.01.2020, 21:59

Это зависит от того, что вы хотите с ним делать.

Если это файл .tar.gz, вы можете просмотреть его содержимое, не распаковывая его, с помощью tar --list -zf / path / to / file .

Затем, если вам нужны только некоторые файлы внутри tgz, вы можете извлечь их с помощью tar -xzvf / path / to / file relative / path / to / files / inside / tar . Как всегда, вы можете изменить каталог назначения с помощью -C .

Это беспокоит, потому что даже если .tar.gz на самом деле является файлом .tar, сжатым с помощью gz, этот сценарий настолько распространен, что tar имеет возможность работать с ним встроенно, передавая -z флаг. Этот флаг работает только с gzip tho (и, возможно, с bzip2 тоже, я не уверен), но не с xz или lz4.

В качестве бонусного ответа, если файл внутри .gz не был tar, вы всегда можете перенаправить вывод на пейджер, например less, который поместит его в память: gzcat / path / to / file | less

1
27.01.2020, 21:59

Если у вас есть второй жесткий диск, вы можете переместить сжатый архив туда, а затем распаковать и разархивировать его в нужное место. это идти:

$ mv archive.gz /mnt/somedrive/
$ cd /where/it/should/go
$ tar xvzf /mnt/somedrive/archive.gz
2
27.01.2020, 21:59

Теги

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