Question

Je me sens comme cela est assez délicat,

J'ai divers dossiers cinque projets que je voudrais sauvegarder dans un fichier zip / tar, mais je voudrais éviter de sauvegarder des fichiers tels que pyc les fichiers et les fichiers temporaires.

J'ai aussi un Postgres db je sauvegarder.


Les conseils pour l'exécution de cette opération comme un script python?

En outre, y aurait-il de toute façon à arrêter le processus à partir de ressources monopolisant dans le processus?


L'aide serait très apprécié.

Était-ce utile?

La solution

Si vous êtes sous Linux (ou toute autre forme d'Unix, comme MacOSX), un moyen simple de réduire la priorité d'un processus - et donc, indirectement, sa consommation de CPU si d'autres processus veulent certains - est le belle commande . En Python (même les systèmes d'exploitation), os.nice permet à votre programme « se faire mieux » (réduire la priorité et c).

Pour la sauvegarde d'un DB PostgreSQL, je recommande propres outils de PostgreSQL ; pour passer comme un éclair un dossier à l'exception des fichiers pyc (et les fichiers temporaires - mais il est vous identifiez les), Python est tout à fait approprié. Par exemple:

>>> os.chdir('/tmp/az')
>>> f = open('/tmp/a.zip', 'wb')
>>> z = zipfile.ZipFile(f, 'w')
>>> for root, dirs, files in os.walk('.'):
...   for fn in files:
...     if fn.endswith('.pyc'): continue
...     fp = os.path.join(root, fn)
...     z.write(fp)
... 
>>> z.close()
>>> f.close()
>>> 

zips tous les fichiers dans ledit sous-arbre, sauf ceux qui se terminent en .pyc (sans compression - si vous voulez la compression, ajoutez un troisième argument zipfile.ZIP_DEFLATED à l'appel zipfile.ZipFile). Pourrait difficilement être plus facile.

Autres conseils

Sur linux, vous pouvez utiliser tar avec l'option --exclude. Par exemple, pour exclure vos fichiers .pyc et fichiers temporaires (dans cet exemple, .tmp)

$ tar zcvf backup.tar.gz --exclude "*.tmp" --exclude "*.pyc"

utilisez l'option z pour zipper ainsi.

Avec multi-cœurs d'aujourd'hui CPUs, vous pouvez constater que cpu n'est pas le goulot de la bouteille. Il est maintenant beaucoup plus probable à l'E / S disque qui doit être mieux partagée.

Linux a la commande ionice pour vous permettre de contrôler ce

  

ionice (1)

     

NOM

   ionice - get/set program io scheduling class and priority
     

SYNOPSIS

   ionice [[-c class] [-n classdata ] [-t]] -p PID [PID ...]

   ionice [-c class] [-n classdata ] [-t] COMMAND [ARG ...]
     

DESCRIPTION
         Ce programme définit ou obtient la classe de planification io et la priorité pour une   programme. Si aucun argument          ou tout simplement -p est donné, ionice interrogera la programmation actuelle io   pour la classe et priorité          processus.

La sauvegarde est au moins autant sur l'importance de reprise en utilisant tous les secours que vous faites.

La bonne façon de sauvegarder le code source est conserver les fichiers source dans un (système de contrôle de version) VCS et sauvegarder le référentiel VCS. Exclure tous les fichiers facilement remplacés générés automatiquement (comme les fichiers *.pyc, etc.) à partir du référentiel VCS. Je recommande Bazaar pour le stockage et la convivialité très efficace, mais votre équipe sera probablement déjà un VCS qu'ils préfèrent .

Pour la sauvegarde d'une base de données PostgreSQL, il est préférable d'utiliser pg_dump vider régulièrement la base de données dans un fichier texte , compresser que, et sauvegarder le résultat. En effet, la sauvegarde devient alors restituables sur une machine, en re-jouer la décharge de base de données dans un autre serveur PostgreSQL.

En ce qui concerne la façon de l'automatiser. Vous seriez mieux à l'aide d'un programme Bash dans le but, car il est juste une question de relier certaines commandes à des fichiers, ce qui est ce que la coquille excelle à

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top