Archivez et compressez tout le répertoire avec python

introduction

Je voulais faire une sauvegarde, donc sur Google [python + répertoire + compression] rechercher. Notez que Zubari n'a pas atteint le sommet de la recherche.

Compresser le répertoire

tar_dir.py


import tarfile

#Nom du répertoire
dir_name = 'data'
#Nom du fichier compressé
tar_name = dir_name + '.tar.gz'

#Processus de compression
archive = tarfile.open(tar_name, mode='w:gz')
archive.add(dir_name)
archive.close()

Si vous spécifiez un répertoire, vous pouvez compresser le répertoire.

Structure du répertoire

Ces répertoires peuvent être compressés.   data/    ├ mydir/    │ ├ nestdir/    │ │ ├ aaa.txt    │ │ ├ bbb.txt    │ │ └ foo.csv    │ ├ bar.csv    │ ├ ccc.txt    │ └ ddd.txt    ├ eee.txt    ├ fff.txt    └ hoge.csv

Liste des modes

Le tarfile a les modes suivants. (Enquête avec Python 3.5)

Syntaxe 1: filemode Grammaire 2: filemode [: compression] (pour une recherche aléatoire) Grammaire 3: filemode [| compression] (pour les flux) Par défaut: r

mode action
'r'Ou'r:*' Transparent pour la méthode de compression, ouvert pour la lecture
'r:' Non compressé et ouvert à la lecture
'r:gz' Ouvrir pour la lecture avec la compression gzip
'r:bz2' Ouvrir en lecture avec la compression bzip2
'r:xz' Ouvrir pour la lecture avec la compression LZMA
'x'Ou'x:' Créer un fichier tar exclusivement sans compression.FileExistsError si le fichier existe
'x:gz' Créer un fichier tar avec la compression gzip.FileExistsError si le fichier existe
'x:bz2' Créer un fichier tar avec la compression bzip2.FileExistsError si le fichier existe
'x:xz' Créer un fichier tar avec la compression lzma.FileExistsError si le fichier existe
'a'Ou'a:' Non compressé et ouvert pour l'ajout.Si le fichier n'existe pas, créez-en un nouveau
'w'Ou'w:' Non compressé et ouvert à l'écriture
'w:gz' Ouvrir pour l'écriture avec la compression gzip
'w:bz2' Ouvrir pour l'écriture avec la compression bzip2
'w:xz' Ouvrir pour l'écriture avec la compression lzma
'r|*' Flux ouvert de manière transparente pour la lecture concernant la méthode de compression
'r|' Ouvrir le flux non compressé pour la lecture
'r|gz' Ouvrez le flux compressé gzip pour la lecture
'r|bz2' Ouvrez le flux compressé bzip2 pour la lecture
'r|xz' Ouvrir le flux compressé lzma pour la lecture
'w|' Ouvrir un flux non compressé pour l'écriture
'w|gz' flux ouvert pour l'écriture
'w|bz2' flux ouvert pour l'écriture
'w|xz' flux ouvert pour l'écriture

Ligne de commande

Vous pouvez archiver et compresser des répertoires à partir de la ligne de commande.

$ python -m tarfile -c tar_name.tar.gz dir_name/

Il change la méthode de compression en fonction de l'extension du fichier tar.

extension Méthode de compression
.gz gz
.tgz gz
.xz xz
.txz xz
.bz2 bz2
.tbz bz2
.tbz2 bz2
.tb2 bz2

Liste des options de ligne de commande pour tarfile

option フルoption argument Remarques
-v --verbose Le défaut est faux
-l --list <tarfile>
-e --extract <tarfile> <output_dir>
-c --create <name> <file>
-t --test <tarfile>

Informations de référence

Document original tarfile (lien)

Recommended Posts

Archivez et compressez tout le répertoire avec python
[python] Compresser et décompresser
Résolution du modèle Lorenz 96 avec Julia et Python
Visualisez la gamme d'insertions internes et externes avec python
Installez la dernière version stable de Python avec pyenv (à la fois 2 et 3)
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Python et matériel - Utilisation de RS232C avec Python -
Appelez l'API avec python3.
python avec pyenv et venv
Créer un répertoire avec python
Obtenir le répertoire personnel avec python
Fonctionne avec Python et R
Automatisez la suppression de l'arrière-plan pour les derniers portraits dans un répertoire avec Python et API
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
[Python] Lisez le fichier csv et affichez la figure avec matplotlib
Résolvez le livre en spirale (algorithme et structure de données) avec python!
[Python] Récupère le répertoire d'exécution du script avec un chemin absolu
Jouez avec les archives de Mastodon dans les réponses et les favoris de Python 2 Count
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
Mélangez les images dans n'importe quel répertoire avec Python et enregistrez-les dans un autre dossier avec des numéros de série.
Communiquez avec FX-5204PS avec Python et PyUSB
Briller la vie avec Python et OpenCV
[Python] Vérifiez le répertoire actuel, déplacez le répertoire
Extraire le fichier xz avec python
L'histoire de Python et l'histoire de NaN
Installez Python 2.7.9 et Python 3.4.x avec pip.
Réseau neuronal avec OpenCV 3 et Python 3
Modulation et démodulation AM avec python
Scraping avec Node, Ruby et Python
Grattage avec Python et belle soupe
Obtenez la météo avec les requêtes Python 2
Trouvez la distance d'édition (distance de Levenshtein) avec python
Encodage et décodage JSON avec python
Introduction à Hadoop et MapReduce avec Python
[GUI en Python] PyQt5-Glisser-déposer-
Accédez à l'API Etherpad-lite avec Python
Installer le plug-in Python avec Netbeans 8.0.2
Lire et écrire NetCDF avec Python
J'ai aimé le tweet avec python. ..
J'ai joué avec PyQt5 et Python3
Maîtriser le type avec Python [compatible Python 3.9]
Lire et écrire du CSV avec Python
Intégration multiple avec Python et Sympy
Coexistence de Python2 et 3 avec CircleCI (1.0)
Jeu Sugoroku et jeu d'addition avec Python
Modulation et démodulation FM avec Python
Commande pour le répertoire courant Python
Résolvez le problème du sac à dos Python avec la méthode de branche et liée
Utilisez Firefox avec Selenium depuis python et enregistrez la capture d'écran
Que dois-je faire avec la structure de répertoires Python après tout?
[Python] Une fonction qui recherche la chaîne de caractères entière avec une expression régulière et obtient toutes les chaînes de caractères correspondantes.
Communiquez entre Elixir et Python avec gRPC
Rendre la console Python couverte d'UNKO
Construction de pipeline de données avec Python et Luigi
Remplissez la chaîne avec des zéros en python et comptez certains caractères de la chaîne
Calculer et afficher le poids standard avec python
J'ai remplacé le calcul numérique de Python par Rust et comparé la vitesse
Surveiller les pannes de Mojo avec Python et Skype