Папка Compressing, не используя дополнительное пространство на диске

У меня есть экземпляр EC2 на 18 ГБ, который исчерпал пространство. Я хотел архивировать и передать файлы от сервера к локальному диску. Существует примерно 1%-е свободное пространство, остающееся на нем. Это означает, что я ничего не могу сжать на диске, потому что это продолжает давать мне zip I/O error: No space left on device ошибка. Существует ли способ, которым я могу сжать все, не используя дополнительное дисковое пространство?

2
задан 31 January 2019 в 11:16

2 ответа

Можно дать команду, чтобы сжаться до stdout по ssh и перенаправить stdout локально в файл. Что-то как:

ssh user@host "tar c /mydir | gzip -f" > myarchive.tar.gz
2
ответ дан 2 December 2019 в 02:41

Следующие инструменты доступны в Ubuntu, и я проверил это rsync, gzip и tar также доступны в MacOS.

  • rsync который может скопировать файлы и/или деревья каталогов локально и через сеть
  • gzip который сжимает единственные файлы
  • tar который может создать архив со многими файлами и деревьями каталогов и сжатием, если Вы указываете его

Каталог Change

Каталог изменения с

cd path-to-source-directory

к каталогу, который Вы хотите сжать.

rsync

У меня нет физического доступа к серверу. Я всегда связываюсь через ssh. Я буду искать rsync.Спасибо.

rsync мощный инструмент копии, и он имеет встроенную проверку, что передача корректна.

  • Это может скопировать файлы и/или деревья каталогов локально и через сеть
  • Это часто используется для резервного копирования
    • локально к внешнему диску или
    • через сетевое соединение с сервером или между серверами

Это просто для использования rsync, если у Вас есть Ubuntu в обоих концах соединения, и я проверил, что существует rsync версия также в MacOS.

Мне нравится следующая командная строка где опция

  • -H принимает жесткие ссылки во внимание (и избегает двойных передач/копий); при отсутствии жестких ссылок, необходимо удалить эту опцию.
  • -a 'архив' делает копию, которая удовлетворяет резервному копированию или синхронизации
  • -v 'подробный' создает вывод всех файлов, которые будут скопированы с -n и все файлы, скопированные в реальном случае (без -n)
  • -n делает это 'пробным прогоном', просто показав то, что это 'хочет сделать'

    rsync -Havn source/ target
    

В Вашем случае источник находится в сервере, и Вы работаете через ssh соединение. Так, в клиенте (Ваш компьютер Mac), выполненный

rsync -avn user-id@ip-address:/path-to-source-directory/ path-to-target-directory

Заметьте запаздывающую наклонную черту после исходного каталога.

Если это выглядит хорошим, можно позволить ему сделать передачу со следующей командой (удалите n для 'пробного прогона')

rsync -av user-id@ip-address:/path-to-source-directory/ path-to-target-directory

Подсказки и комментарии

  • После передачи можно сделать то, что Вы хотите с копией в целевом каталоге. Я думаю, что Вы хотите сжать его, и я предлагаю, чтобы Вы использовали tar с этой целью и создайте tarball.

  • Если Вы не можете работать rsync или gzip или tar в Вашей MacOS можно загрузить компьютер Mac от USB pendrive или диска DVD с Ubuntu, и запустить программы тот путь. (Совет загрузить компьютер от USB pendrive или диска DVD с Ubuntu применяется также к компьютеру с Windows.)

  • Можно прочитать встроенное руководство man rsync, man gzip и man tar в Вашем LTS Ubuntu 16.04, и я уверен, что можно найти хорошие учебные руководства через Интернет.

gzip

Каталог изменения с cd path-to-source-directory к каталогу, который Вы хотите сжать.

Сожмите единственные файлы с

gzip -c file > path-to-external-directory/file.gz

Каталог изменения туда, где Вы хотите извлечь файл и выполнить gunzip для распаковки

cd to-where-you-want-to-extract-the-files
gunzip -c path-to-external-directory/file.gz > file

tar

Каталог изменения с cd path-to-source-directory к каталогу, который Вы хотите сжать.

Сожмите группу файлов к 'tarball', например

tar -cvzf path-to-external-directory/file.tar.gz file1 file2 file3

или если существует пространство достаточно в целевом разделе на внешнем диске для целого каталога

tar -cvzf path-to-external-directory/file.tar.gz .

Пространство и заключительная точка важны.

Можно 'изучить' файл tar с командой

tar -tvf path-to-external-directory/file.tar.gz

Извлеките сжатые файлы из tarball со следующими командами

cd to-where-you-want-to-extract-the-files
tar -xvf path-to-external-directory/file.tar.gz
1
ответ дан 2 December 2019 в 02:41

Другие вопросы по тегам:

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