Cela devrait être très simple pour les experts ici.
J'ai un compte Linux avec un quota de disque utilisateur de seulement 6 Go. Il y a un dossier /opt
de données avec environ 3 Go de données avec une compression de 1 Go. Il y a des liens symboliques à l'intérieur data-folder
. Habituellement, pour effectuer une sauvegarde de travail, je faisais ce qui suit.
cp -rvfL /opt/data-folder ~/
cd ~/
tar -zcvf data-folder.tar.gz data-folder
rm -rvf data-folder
Maintenant, j'ai déjà consommé 2,5 Go dans mon quota de disque utilisateur, j'ai juste assez d'espace pour copier des fichiers dans ma maison, mais pas à tar
nouveau.
Existe-t-il un moyen de tar et de copier le dossier avec en une seule commande, par exemple en utilisant un canal.
PS Je ne peux pas tarir /opt
car je n'ai qu'un accès en lecture à /opt
.
cd /opt; tar zcf $HOME/junk.tar.gz junk
.Réponses:
Vous voulez créer un fichier tar loin de l'endroit où les fichiers dont vous avez besoin pour tar résident?
Il existe plusieurs façons de procéder.
S'il doit être créé localement (= sur la même machine):
Vous pouvez ajouter des fichiers ou des répertoires supplémentaires à tar à la fin de cette commande.
S'il doit être créé à distance (c'est-à-dire que vous souhaitez créer le fichier tar sur un hôte distant à partir de celui contenant les données à tarer):
La dernière version est très polyvalente. Par exemple, vous pouvez également "dupliquer" un répertoire + sous-répertoires en utilisant la même technique:
Dupliquez un répertoire + sous-répertoires vers un autre répertoire local:
Dupliquez un répertoire + sous-répertoires vers un autre répertoire distant:
Déposez le 'v' si vous n'en avez pas besoin pour afficher les fichiers car ils sont tarés (ou non tarés): il ira alors beaucoup plus vite, mais ne dira pas grand-chose sauf en cas d'erreur.
J'utilise ". / ..." pour la source pour forcer tar à le stocker en tant que chemin RELATIF. Dans certains cas, vous souhaiterez ajouter des informations de chemin supplémentaires:
Par exemple, pour tarer les fichiers crontab, y compris celui dans / etc, vous pouvez faire:
J'utilise exprès le chemin relatif: certaines anciennes versions de tar peuvent être dangereuses et extraire des fichiers avec leur chemin GLOBAL d'origine, ce qui signifie que vous pourriez faire:
cd /safedir ; tar xvf sometar
et avoir les fichiers avec des noms globaux écraser les fichiers à leur chemin d'origine, qui est à l'extérieur de / safedir et pas en dessous! Très dangereux et toujours possible car il existe de vieux serveurs de production. Mieux vaut être utilisé pour utiliser des chemins relatifs tout le temps, même si vous utilisez un tar plus récent.la source
-cvf
place decvf
, d'autres ne reconnaîtront pas le-
style. Etz
utilisé pour signifier «compresser avec« compresser »», mais sur tar «récent», cela signifie «compresser avec gzip». Vous pouvez savoir quelle compression est utilisé sur un fichier avec:file zefile
. Et puis renommez-le en conséquence (si votre tar utilisecompress
, il vaut mieux le renommer .tar.Z et non .tar.gz)Utilisez l'
-h
option tar. Depuis la page de manuel:afin que vous puissiez utiliser
tar -zcvfh data-folder.tar.gz /opt/data-folder
la source
bsdtar
place, oupax
(cd /opt && pax -Lw data-folder | gzip > ~/data-folder.tar.gz
) qui détecterait les bouclestar -rf <tarfilename> <filename>
pour les ajouter au fichier tar existant.