Je dois télécharger un fichier d'environ 1 Go sur un serveur en ligne pour accéder à un ami. Maintenant, il semble y avoir un problème avec ma connexion Internet, car si j'essaie de télécharger un fichier de plus de 20 Mo, il arrête simplement le téléchargement et ne redémarre pas pour une raison quelconque.
Je voudrais donc une application ou un (des) script (s) (il peut y en avoir besoin de deux, un qui fait les fichiers, et un qui les reconstruit) qui peut faire ce qui suit:
Fractionner le fichier en fichiers plus petits, où la taille maximale de chaque fichier peut être définie par l'utilisateur afin qu'elle puisse être utilisée dans d'autres cas
Est capable de reconstruire le fichier à l'autre extrémité et de vérifier l'intégrité en vérifiant son SHA512SUM
Je préférerais qu'il ne comprime rien. J'utilise Ubuntu GNOME 16.04.1 avec GNOME 3.20. Y-a-t'il une façon de le faire?
J'ai codé deux petits scripts qui peuvent être utilisés pour cela. Tout d'abord, placez le script (nommez-le "séparateur" ou tout ce que vous voulez) dans un dossier séparé avec le fichier à fractionner, puis exécutez bash:
./splitter FILE SIZE
En FILE le fichier à diviser et TAILLEZ la taille en Mo. Après cela, vous verrez tous les blocs fractionnés (SPLITTED_FILE.aa, SPLITTED_FILE.ab, etc.), un fichier de somme de contrôle (SPLITTED_CHECK_SHA256SUM) et un fichier tar avec tous ces fichiers à l'intérieur (SPLITTED_TAR.tar). Supprimez tout sauf le fichier tar. Lorsque vous devez l'envoyer, extrayez-le et envoyez les fichiers individuels. Une fois arrivés, placez-les à nouveau dans un fichier tar du même nom (SPLITTED_TAR.tar) et placez-le dans un dossier séparé avec le deuxième script ("mergefile" ou tout autre nom). Courir:
./mergefile
Il doit extraire tous les fichiers, les fusionner dans un fichier avec le même nom que celui d'origine et vérifier la somme sha256.
Notez que c'est un script très brut, alors utilisez-le exactement comme je l'ai décrit, dans un dossier séparé sans rien d'autre. C'est si vous voulez l'utiliser, pensez il est plus facile de le faire à la main en ligne de commande .. Mais je voulais pratiquer un script Shell!
script de séparation:
#!/bin/bash
#Usage: splitter [FILENAME] [SIZE]
PROGRAMNAME=$(basename $0)
PREFIX='SPLITTED_FILE'
if [[ $# != 2 ]]; then
echo "Usage: $PROGRAMNAME [FILENAME] [SIZE]"
exit 1
fi
FILENAME=$1
SIZE=$2
if [[ -f $FILENAME ]]; then
if [[ $SIZE =~ ^[0-9]+$ && $SIZE != 0 ]]; then
sha256sum $FILENAME > SPLITTED_CHECK_SHA256SUM
split -b ${SIZE}'M' $FILENAME $PREFIX
tar -cf SPLITTED_TAR.tar SPLITTED_FILE* SPLITTED_CHECK_SHA256SUM
echo "Done."
exit
else
echo "$PROGRAMNAME: Invalid size"
exit 1
fi
else
echo "$PROGRAMNAME: Invalid filename"
exit 1
fi
script de fusion:
#!/bin/bash
#Usage: mergefile
PROGRAMNAME=$(basename $0)
PREFIX='SPLITTED_FILE'
if [[ $# != 0 ]]; then
echo "Usage: $PROGRAMNAME. No arguments (SPLITTED_TAR.tar will be merged)"
exit 1
fi
FILENAME=""
if [[ -f 'SPLITTED_TAR.tar' ]]; then
tar -xf 'SPLITTED_TAR.tar'
FILENAME=$(cut -f 3 -d " " SPLITTED_CHECK_SHA256SUM)
cat ./SPLITTED_FILE* > $FILENAME
if [[ $(sha256sum $FILENAME | cut -f 3 -d " ") == $(cut -f 3 -d " " SPLITTED_CHECK_SHA256SUM) ]]; then
echo "SHASUM Checks!"
else
echo "File corrupted (SHASUM doesn't check!)"
exit 1
fi
echo "Done."
exit
else
echo "$PROGRAMNAME: SPLITTED_TAR.tar not found."
exit 1
fi
Consultez les réponses suggérées avant de poster. La première réponse suggérée est celle-ci: Fractionner un gros fichier en plus petits fichiers puis les intégrer pour obtenir le fichier d'origine
Et voici les commandes
split -b 20M -d bigfile bigfile-part
cat bigfile-part* > bigfile
Éditer:
... et pour la partie de hachage, vous pouvez générer un fichier de somme de contrôle SHA512 à partir du fichier d'origine ("gros"):
sha512sum bigfile > sha512.txt
Après avoir remonté toutes les petites pièces, vérifiez à nouveau avec le nouveau fichier et comparez les valeurs.