Skip to content

Instantly share code, notes, and snippets.

@fridim
Last active September 28, 2015 17:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fridim/1471937 to your computer and use it in GitHub Desktop.
Save fridim/1471937 to your computer and use it in GitHub Desktop.
a small script to create archive (no option, can pass a file, a folder, a link ..)
#!/bin/sh
# Most of the time, you just want a .tar.gz of a folder, regardless of
# where you are. This is a small script that does it and put the result
# in /tmp. If you have xsel installed, it copied to your clipboard the
# destination file.
set -e
file="$1"
if [ ! -e "$file" ]; then
echo "File does not exist." >&2
exit -1
fi
if [ -L "$file" ]; then
file=$(readlink -f "$file")
fi
orig_size=$(du -sh "$file"|cut -f 1)
if [ -d "$file" ]; then
cd "$(dirname "$1")" || exit 1
filename="$(mktemp -d)/$(date +%Y%m%d)_$(basename "$file").tar.gz"
tar czf "$filename" "$(basename $file)"
else
filename="$(mktemp -d)/$(date +%Y%m%d)_$(basename "$file").gz"
gzip -c "$file" > "$filename"
fi
echo "$orig_size ---> $(du -sh "$filename"|cut -f 1)"
echo
echo "Your tarball : $filename"
if command -v xsel>/dev/null; then
echo -n "$filename"|xsel
fi
exit 0
@flagos
Copy link

flagos commented Dec 14, 2011

mmm sympa.

Un petit conseil, pour t'eviter de galérer a calculer des dates pour avoir un nom de fichier qui a priori n'existe pas (fait uniquement basé sur de la proba), tu devrais utiliser mktemp. mktemp te retourne un nom de fichier situé dans le dossier temporaire. J'y vois 2 avantages:

  1. L'inexistence du fichier t'es garanti par l'OS: c'est lui qui l'a crée pour toi.
  2. Le dossier temporaire peut avoir été placé ailleurs que dans /tmp pour des raisons d'administration. Les admins positionnent $TMPDIR vers le répertoire qui les arragent et cette variable va servir de préfixe pour mktemp de manière transparente.

Autre astuce, mktemp -d permet créer un dossier: c'est en général beaucoup plus pratique que mktemp tout court qui t sort un nom de fichier imbitable.

Voili voilou ;-)

@fridim
Copy link
Author

fridim commented Dec 14, 2011

Yop,

Oui, je connaissais mktemp. Mais bon faut voir ca peut être moins pratique quand on parcourt l'arbo depuis son client mail pour trouver le .tar.gz.

Et la date, je la mets systématiquement dans mes noms de fichiers que j'envoie par ci par là, c'est pour ca, pas tellement pour l'unicité :)

J'ai patché le code pour mktemp :)

@flagos
Copy link

flagos commented Dec 14, 2011 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment