Je souhaite créer un script bash qui se connectera à mon compte google drive et sauvegardera mon dossier principal. J'ai fait quelques recherches et je sais que nous avons besoin d'OAuth pour l'utilisation de l'API Google Drive, mais je suis encore relativement nouveau et j'ai pensé que je pouvais obtenir de solides conseils de la part de la communauté de la pile.Script Bash pour sauvegarder des données sur google drive
Répondre
Je suppose que vous n'avez pas besoin de réinventer la roue, utilisez gdrive et vous êtes bon pour aller
SETUP:
wget -O drive https://drive.google.com/uc?id=0B3X9GlR6EmbnMHBMVWtKaEZXdDg
mv drive /usr/sbin/drive
chmod 755 /usr/sbin/drive
Maintenant, il suffit de lancer drive
pour démarrer la processus d'authentification. Vous aurez un lien comme celui-ci pour coller et naviguez dans votre navigateur Web:
Go to the following link in your browser:
https://accounts.google.com/o/oauth2/auth?client_id=123456789123-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=state
Authentifier et de fournir l'autorisation de l'application pour accéder à votre Google Drive, et vous serez fourni une vérification code pour copier et coller dos à votre shell:
Enter verification code: 4/9gKYAFAJ326XIP6JJHAEhs342t35LPiA5QGW0935GHWHy9
USAGES:
drive upload --file "/some/path/somefile.ext"
SRC:
backing-up-linux-server-files-to-google-drive
REMARQUE:
Si vous voulez vraiment construire un script bash jeter un oeil à ce gist, à savoir:
- glane automatiquement le type MIME du fichier ajouts
- fichiers multiples
- supprime le préfixe de répertoire de fichier
- œuvres avec les noms de fichiers avec des espaces
- utilise dotfile pour la configuration et le jeton
- Configuration interactive
- télécharge dans le dossier cible si le dernier l'argument ressemble à un ID de dossier
- sortie plus tranquille
- utilise des drapeaux de ligne de commande plus pour une meilleure lisibilité
gaz en ajoutant
curl_args="--limit-rate 500K"
à$ HOME/.gdrive.
conf
#!/bin/bash
# based on https://gist.github.com/deanet/3427090
#
# useful $HOME/.gdrive.conf options:
# curl_args="--limit-rate 500K --progress-bar"
browser="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
destination_folder_id=${@: -1}
if expr "$destination_folder_id" : '^[A-Za-z0-9]\{28\}$' > /dev/null
then
# all but last word
set -- "${@:0:$#}"
else
# upload to root
unset destination_folder_id
fi
if [ -e $HOME/.gdrive.conf ]
then
. $HOME/.gdrive.conf
fi
old_umask=`umask`
umask 0077
if [ -z "$username" ]
then
read -p "username: " username
unset token
echo "username=$username" >> $HOME/.gdrive.conf
fi
if [ -z "$account_type" ]
then
if expr "$username" : '^[^@]*$' > /dev/null || expr "$username" : '.*@gmail.com$' > /dev/null
then
account_type=GOOGLE
else
account_type=HOSTED
fi
fi
if [ -z "$password$token" ]
then
read -s -p "password: " password
unset token
echo
fi
if [ -z "$token" ]
then
token=`curl --silent --data-urlencode Email=$username --data-urlencode Passwd="$password" --data accountType=$account_type --data service=writely --data source=cURL "https://www.google.com/accounts/ClientLogin" | sed -ne s/Auth=//p`
sed -ie '/^token=/d' $HOME/.gdrive.conf
echo "token=$token" >> $HOME/.gdrive.conf
fi
umask $old_umask
for file in "[email protected]"
do
slug=`basename "$file"`
mime_type=`file --brief --mime-type "$file"`
upload_link=`curl --silent --show-error --insecure --request POST --header "Content-Length: 0" --header "Authorization: GoogleLogin auth=${token}" --header "GData-Version: 3.0" --header "Content-Type: $mime_type" --header "Slug: $slug" "https://docs.google.com/feeds/upload/create-session/default/private/full${destination_folder_id+/folder:$destination_folder_id/contents}?convert=false" --dump-header - | sed -ne s/"Location: "//p`
echo "$file:"
curl --request POST --output /dev/null --data-binary "@$file" --header "Authorization: GoogleLogin auth=${token}" --header "GData-Version: 3.0" --header "Content-Type: $mime_type" --header "Slug: $slug" "$upload_link" $curl_args
done
réponse Impressionnant! – janos
il devrait être «conduire environ» au premier lancement, pour définir la clé https://github.com/prasmussen/gdrive#other. Aussi, je pense que la commande a changé en 'gdrive', bien que' drive' fonctionne toujours –
voir http://stackoverflow.com/questions/24554638/uploade-and-updating-files-to-google-drive-via-cmd –