Copy.com in Linux, cloud storage voor nerds

Door Redsandro op vrijdag 24 januari 2014 18:28 - Reacties (14)
Categorie: Software, Views: 6.328

Copy.com cloud in Linux
Copy.com is een relatief nieuwe cloud service van de beveiligingsfirma Barracuda Networks, en derhalve volgens mij wel netjes.

Om marktaandeel van bestaande en populaire clouds zoals Dropbox af te snoepen hebben ze tijdelijk een actie waarbij je 5GB extra ruimte per referrer krijgt, boven op de 15GB die je standaard krijgt.

Dat is 10 keer zoveel als Dropbox per referrer biedt, en na één referrer al meer dan het gratis maximum van Dropbox. Leuk om even een gratis cloud op te bouwen.

Op GoT is het natuurlijk niet de bedoeling om met referral links te gaan strooien, maar hier op mijn Tweakblog wil ik je natuurlijk even de kans geven om via dit linkje een account aan te maken met 20GB. (Je kan natuurlijk ook zonder referral een 'schoon' account aanmaken met 15GB.)
Linux support
Als een van de weinige cloud-concurenten heeft Copy ook gewoon ondersteuning voor Linux. In de GUI en in de terminal. Dat laatste is erg chill. Zo kan je de boel op je eigen manier automatiseren.

Ik heb bijvoorbeeld een Upload to Copy Cloud context menu item gemaakt voor Nemo. Ik zal voor jullie entertainment even kort uitleggen hoe, en dan kan je dat zelf wel omzetten voor welke file-manager of ander truukje je dan ook wilt gebruiken.

http://tweakers.net/ext/f/PxEmX3ZU103gS4L7p0hwhIha/full.png


1) Categorie duh: Ten eerste heb je natuurlijk je home encrypted.

Zodat wachtwoorden in je keyring niet leesbaar zijn voor derden.

2) Voeg je Copy wachtwoord toe aan je keyring.

In sommige distro's heet het Seahorse, in anderen heet het Passwords and Keys. Voeg daar een nieuw password/secret toe.

http://tweakers.net/ext/f/IVa73kAIdysBSt2vHpuzFeMV/full.png

Voer een unieke beschrijving en je Copy wachtwoord in, en sla het op in je login keyring. Deze is standaard unlocked na het inloggen.

3) Maak een wrapper-scriptje die CopyCmd (die je van Copy kan downloaden) uitvoert met de juiste credentials. Zet dit op een global uitvoerbare locatie en +x het. Standaard /usr/local/bin, maar de betere nerd heeft waarschijnlijk zijn eigen pad in $PATH staan.

Bij mij is het bijvoorbeeld /home/redsandro/bin/rs-copycmd.py
Maar bij mij staat ~/bin dan ook standaard in $PATH en dat is niet standaard.


Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env python
# Redsandro 2014-01-24 CopyCmd password wrapper

import os, sys
import gnomekeyring as gk
import subprocess


# Arguments
keyname = 'Cloud/CopyCmd 2014-01-24'
user    = 'redsandro@something.com'
binary  = '/opt/copy/x86_64/CopyCmd'
keyring = 'login'


def main():

    # Find the key
    keyFound    = False
    try:
        keyItems    = gk.list_item_ids_sync(keyring)
    except gk.NoSuchKeyringError:
        print 'No such keyring:', keyring
        sys.exit(500)

    for keyItem in keyItems:
        key = gk.item_get_info_sync(keyring, keyItem)
        if  key.get_display_name() == keyname:
            keyFound = True
            copyCmd(key)
            break
    if not keyFound:
        print 'Could not find key for', keyname
        sys.exit(500)


def copyCmd(key):

    args = sys.argv[1:]
    cmd = [binary, 'Cloud', '-password=%s' % key.get_secret(), '-username=%s' % user] + args

    process = subprocess.Popen(cmd)
    process.wait()

    print
    input("DONE! :D (Press Enter to close.)")


if __name__ == "__main__":
    print 'Cloud helper thingie - Redsandro'
    main()



Natuurlijk even je login-email-adres en de unieke omschrijving die je in je keyring hebt gezet (en de locatie van je binary) hier aanpassen:

Python:
1
2
3
4
5
# Arguments
keyname = 'Cloud/CopyCmd 2014-01-24'
user    = 'redsandro@something.com'
binary  = '/opt/copy/x86_64/CopyCmd'
keyring = 'login'



4) Nemo context-menu aanpassen

~/.local/share/nemo/actions/rs-copy-upload.nemo_action


code:
1
2
3
4
5
6
7
[Nemo Action]
Name=Upload to Copy Cloud
Comment=Uload to Copy Cloud using personal key from SeaHorse
Exec=gnome-terminal -x sh -c "/home/redsandro/bin/rs-copycmd.py put -r '%F' '/upload/'"
Icon-Name=filesave
Selection=Any
Extensions=any;



Uiteraard even het pad veranderen. En eventueel Icon-Name, filesave is een beetje lomp maar ik kon zo snel niets beters vinden in mijn theme.

5) Even het mapje upload/ aanmaken op je Copy cloud voor gebruik

Via de website ofzo. Anders krijg je een foutmelding.

6) Mapje verder negeren (optioneel)

Als je de grafische client ook gebruikt is het een goed idee om te zorgen dat het mapje upload/ niet meteen weer naar je computer wordt gesynct. Het komt tenslotte net van je computer af. (Tenzij je dat juist wel wilt natuurlijk).

Bij Dropbox zou je dit Selective Sync noemen. Bij Copy heet dit gewoon Manage My Files.

http://tweakers.net/ext/f/5EM1JdNB4sLyjzfwy2OzQTSI/full.png

Klaar! Het werkt meteen in Nemo. Geen restart nodig.


Ik upload vaak footage wat ik later op mijn werk (eventueel) wil gaan gebruiken, maar je kan dit natuurlijk inzetten zoals je wilt.
Deel je vaak bestanden? Je kan via CopyCmd ook een share-link aanmaken. Zet deze vervolgens automatisch in je clipboard, en je hebt een automatisch file-to-copy-share-url context-menu item. :D

Veel succes met het sparen van Copy cloud storage!

http://tweakers.net/ext/f/fLAWWVOItcOnP4amq93Ef05t/full.png


FAQ
Waarom sys.exit(500)?

Ik heb geen verstand van exit codes behalve dat 0 goed is. Daarom gebruik ik verder gewoon HTML HTTP status codes en 500 (Internal Server Error) betekent dat het niet goed zit. Je scripts zijn dus altijd chainable zolang een goed einde maar 0 is, en een fout einde !0. :P
edit:
Hoewel ik hier nooit problemen mee heb gehad, en ze prima kan opvangen in een chain, wijst iThinkSo ons erop dat code's boven de 127 problemen op kunnen leveren. :)