Eines de l'usuari

Eines del lloc


public:linux:utils:gdrive

prasmussen/gdrive

Ultimament he perdut dades i vaig ha fer us del gdrive. Per linia de comadament per a linux tinguem:

GITHUB

Instal·lació

He probat de compilar-lo es golang, però no ho he aconseguit de tota manera aquí tinguem els executables per diferents plataformes.

gdrive-linux-rpi_nozipexe_.zip

gdrive-linux-386_nozipexe_.zip

gdrive-linux-x64_nozipexe_.zip

gdrive-linux-arm_nozipexe_.zip

gdrive-linux-arm64_nozipexe_.zip

La rpi3 te un micro de 64bits, però el raspbian encara es de 32bits.
 file /lib/systemd/systemd

Execució

Per executar-lo cal baixar-lo, canviar-li el nom si volem i donar-li permisos d'execució. La primera vegada que l'executem ensdora una adreça web per validar amb el nostre compte GOOGLE. Després ja el podrem utilitzar, amb el següents paràmetres:

global:
  -c, --config <configDir>         Application path, default: /Users/<user>/.gdrive
  --refresh-token <refreshToken>   Oauth refresh token used to get access token (for advanced users)
  --access-token <accessToken>     Oauth access token, only recommended for short-lived requests because of short lifetime (for advanced users)
  --service-account <accountFile>  Oauth service account filename, used for server to server communication without user interaction (file is relative to config dir)
  
options:
  -f, --force       Overwrite existing file
  -r, --recursive   Download directories recursively, documents will be skipped
  --path <path>     Download path
  --no-progress     Hide progress

les següents ordes:

<fileId> es identificador del arxiu o directori que dona el google, abans de tot cal veurels amb l'orde:

gdrive list
gdrive [global] list [options]                                 List files
gdrive [global] download [options] <fileId>                    Download file or directory
gdrive [global] download query [options] <query>               Download all files and directories matching query
gdrive [global] upload [options] <path>                        Upload file or directory
gdrive [global] upload - [options] <name>                      Upload file from stdin
gdrive [global] update [options] <fileId> <path>               Update file, this creates a new revision of the file
gdrive [global] info [options] <fileId>                        Show file info
gdrive [global] mkdir [options] <name>                         Create directory
gdrive [global] share [options] <fileId>                       Share file or directory
gdrive [global] share list <fileId>                            List files permissions
gdrive [global] share revoke <fileId> <permissionId>           Revoke permission
gdrive [global] delete [options] <fileId>                      Delete file or directory
gdrive [global] sync list [options]                            List all syncable directories on drive
gdrive [global] sync content [options] <fileId>                List content of syncable directory
gdrive [global] sync download [options] <fileId> <path>        Sync drive directory to local directory
gdrive [global] sync upload [options] <path> <fileId>          Sync local directory to drive
gdrive [global] changes [options]                              List file changes
gdrive [global] revision list [options] <fileId>               List file revisions
gdrive [global] revision download [options] <fileId> <revId>   Download revision
gdrive [global] revision delete <fileId> <revId>               Delete file revision
gdrive [global] import [options] <path>                        Upload and convert file to a google document, see 'about import' for available conversions
gdrive [global] export [options] <fileId>                      Export a google document
gdrive [global] about [options]                                Google drive metadata, quota usage
gdrive [global] about import                                   Show supported import formats
gdrive [global] about export                                   Show supported export formats
gdrive version                                                 Print application version
gdrive help                                                    Print help
gdrive help <command>                                          Print command help
gdrive help <command> <subcommand>                             Print subcommand help

La meva utilització principal serà pujar directoris -r.

Encara que seria més ràpid el sync que no puja els arxius que ja estan.

Des de el local fins al Google seria:

gdrive [global] sync upload [options] <path> <fileId>

global:
  -c, --config <configDir>         Application path, default: /Users/<user>/.gdrive
  --refresh-token <refreshToken>   Oauth refresh token used to get access token (for advanced users)
  --access-token <accessToken>     Oauth access token, only recommended for short-lived requests because of short lifetime (for advanced users)
  --service-account <accountFile>  Oauth service account filename, used for server to server communication without user interaction (file is relative to config dir)
  
options:
  --keep-remote             Keep remote file when a conflict is encountered
  --keep-local              Keep local file when a conflict is encountered
  --keep-largest            Keep largest file when a conflict is encountered
  --delete-extraneous       Delete extraneous remote files
  --dry-run                 Show what would have been transferred
  --no-progress             Hide progress
  --timeout <timeout>       Set timeout in seconds, use 0 for no timeout. Timeout is reached when no data is transferred in set amount of seconds, default: 300
  --chunksize <chunksize>   Set chunk size in bytes, default: 8388608
Amb sync he tingut problemes, amb arxiu de la /data/cache que tampoc puc esborrar es para el procés provaré només amb upload -r ../path, no fa falta el ID de la carpeta ni tampoc m'ha demanat confirmació, seguiré provant.
Tampoc puc pujar mes de x arxius Failed to upload file: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded no se si primer rsync despres comprimir i despres pujar… caldrà provar (max 2GB, caldrà dividir-ho en parts, posar-ho en un dir i pujar el dir
Semblava fàcil però no ho es perquè pregunta el nom cada fitxer o volum, cal fer un interessant script, creating_multi-volume_tar_bz2_archives_-_my_nix_world.pdf.
multivol-tar.sh source-file-or-folder my-archive 1073741824


where 1073741824 means the volume size in bytes (i.e. 10243=1 Gib)


#!/bin/bash
src_len=$(du -sb $1|cut -f1)
vol_count=$(($src_len/$3+1))
printf "n $2-%d.tar\n" `seq 2 ${vol_count}` | tar -ML $(($3/1024)) -cvf $2-1.tar $1

If you want to tar and compress at the same time you should replace the last line in the script above with this one:


printf "n $2-%d.tar\n" `seq 2 ${vol_count}` | tar -ML $(($3/1024)) -cvf $2-1.tar $1 && for f in `ls source-folder*.tar`;do bzip2 -9> $f.bz2
He afegit > /dev/null perquè nomes surten els errors. I he tret el cache, - -exclude=data/cache perque no fa falta i un arxiu em donava error
#!/bin/bash
src_len=$(du -sb $1|cut -f1)
vol_count=$(($src_len/$3+1))
printf "n $2-%d.tar\n" `seq 2 ${vol_count}` | tar -ML $(($3/1024)) -cvf $2-1.tar $1 --exclude=data/cache > /dev/null


Per descomprimir:

tar -xMf my_documents1.tar

Despres quan pregunte pel següent arxiu cal posar una n al davan del següent arxiu:

n my_documents2.tar
El descomprimir així es un procés molt llarg, si vols restablir una copia de seguretat ràpidament

Script per descomprimir

Per descomprimir, que no es el normal, el normal es no utilitzar les copies de seguretat cal descomprimir de un en un, he trobat aquest script per comprimir i descomprimir:

Comprimir:

#!/bin/bash
# CREATION SCRIPT

vol_size=100000

# estimated number of volumes: dir-size / vol-size + 1
# adding a further +1 to be safe
n=$(($(du -s Documents2 | awk '{ print $1 }') / $vol_size + 2))

for ((i = 2; i <= n; i++)); do printf 'n file-%d.tar\n' $i; done |
  tar -ML $vol_size -cf file-1.tar Documents2/ 2>&-

Per descomprimir

#!/bin/bash
# EXTRACTION SCRIPT

n=$(printf '%s\n' file-*.tar | sed 's/^file-//;s/\.tar$//' | sort -nr | head -1)
for ((i = 2; i <= n; i++)); do printf 'n file-%d.tar\n' $i; done |
  tar -M -xf file-1.tar 2>&-

cron+tar+gdrive=backup

Amb aquestes eines puc fer una copia de seguretat del les pàgines web. Amb el dron faig que s'executin a un hora determinada. Faig multi-volums de 1G, així no tinc problemes de massa arxius petits o arxius massa grossos, i despres el puge al gdrive.

El tar, si el posem al mateix directori maxaca el anterior, així que no tindre problmes d'espai. El gdrive crea una carpeta nova cada vegada, encara que tinguin el mateix nom, tindre que esborrar de quan en quan.

Podria fer totes les dies una copia al USB i totes les setmanes(0 diumenge) al GDRIVE.

sudo crontab -e
01 04 * * * sh /home/pi/multivol-tar.sh /var/www/html/dokuwiki /home/pi/USB/dkwk_bckp/dkwki 1073741824 >> /dev/null 2>&1
01 05 * * 0 /home/pi/gdrive upload -r /home/pi/USB/dkwk_bckp >> /dev/null 2>&1
public/linux/utils/gdrive.txt · Darrera modificació: 2017/08/26 10:40 per crevert