Как мне создать zip-архив структуры каталогов в Python?
В скрипте Python
В Python 2.7+
shutil
имеетmake_archive
функция.from shutil import make_archive make_archive( 'zipfile_name', 'zip', # the archive format - or tar, bztar, gztar root_dir=None, # root for archive - current working dir if None base_dir=None) # start archiving from here - cwd if None too
Здесь архив будет назван
zipfile_name.zip
. Еслиbase_dir
будет дальше отroot_dir
, это исключит файлы, не входящие вbase_dir
, но все же заархивирует файлы в родительских каталогах доroot_dir
.У меня была проблема с тестированием на Cygwin с 2.7 - ему нужен аргумент root_dir для cwd:
make_archive('zipfile_name', 'zip', root_dir='.')
Использование Python из оболочки
Вы можете сделать это с Python из оболочки также с помощью модуля
zipfile
:$ python -m zipfile -c zipname sourcedir
где
zipname
- имя файла назначения, который вы хотите (добавьте.zip
, если хотите, он не будет делать это автоматически ) и sourcedir - это путь к каталогу.Архивирование Python (или просто не нужен родительский каталог):
Если вы пытаетесь сжать пакет Python с
__init__.py
и__main__.py
, и вы не хотите родительский каталог, это$ python -m zipfile -c zipname sourcedir/*
И
$ python zipname
будет запускать пакет. (Обратите внимание, что вы не можете запускать подпакеты в качестве точки входа из архива в архиве.)
Архивирование приложения Python:
Если у вас есть python3.5 +, и вы хотите заархивировать его пакет Python, используйте zipapp :
$ python -m zipapp myapp $ python myapp.pyz
Исходно нет. Тем не менее, я считаю, что для этого существуют дорогие сторонние инструменты.
Кроме того, вы можете восстановить свою БД из резервной копии, а затем ВОССТАНОВИТЬ ЖУРНАЛЫ
до определенного момента времени с помощью STOPAT = '30.06.2009 14:30'
аргумент.
Доступны Apex и Спасение журнала SQL . Если ваши журналы не находятся в режиме восстановления FULL
, вы можете оказаться в затруднительном положении, если не сможете восстановить.
Ознакомьтесь с продуктом LogRescue RedGate. Без сторонних продуктов вы, вероятно, ограничитесь восстановлением на определенный момент времени в отдельной базе данных, а затем вручную скопируете запись обратно в производственную базу данных.