Brick CLI
Vad är Brick CLI?
Brick CLI är kommandoradsklienten för Brick.
Den håller en lokal mapp på din dator synkroniserad med ditt Brick-konto - filer och mappar speglas i båda riktningarna så snart en ändring upptäcks, antingen lokalt eller på servern. Utöver själva synkroniseringen kan du:
- Ladda upp och ner enskilda filer eller hela mappträd, utan att gå via synkmappen.
- Välja vilka undermappar som ska hoppas över helt (selektiv synk).
- Ge fjärråtkomst till filer på enheten via Brick-webappen (remote control).
- Köra klienten som en daemon i bakgrunden, utan ett öppet terminalfönster.
- Hantera flera konton och enkelt växla mellan dem.
Installation
Installera senaste versionen på macOS eller Linux så här:
curl -fsSL https://webbite.io/cli/install.sh | bash
Binären installeras till ~/.local/bin som standard.
Kommandon
Brick CLI är uppbyggt av kommandon (login, sync, upload och så vidare). Kör du brick helt utan argument skrivs hjälptexten ut - inget annat händer, ingen synkronisering startar:
Usage:
brick [global flags] <command> [command flags] [args]
Global flags (must come before command):
-h, --help Show help information
-v, --version Show version information
--no-upgrade-check Disable automatic upgrade check
--no-control-api Disable the local status/control API (used by tray apps)
Account Mgmt:
login Log in via browser
switch-accounts Switch the active account
whoami Show logged-in user and account details
restart Clear existing settings and configure Brick from scratch
Storage Sync:
sync [options] Sync storageSyncFolder with the Storage API and watch for changes
-d, --daemon Detach into the background once logged in and the Storage API is reachable
-r, --remote-control Allow remote control via Brick webapp (also possible to enable via config file)
--agent-root PATH Directory to expose to remote clients when remote control is enabled (repeatable)
-s, --selective-sync Choose which folders to exclude from sync (deletes their local copies)
--list-selective-sync List the folders currently excluded from sync
Transfer:
upload <file|dir> [target] Upload a local file or folder
-r, --recursive Required to upload a folder
-s, --silent Suppress all output except errors
--overwrite Replace an existing remote file instead of creating a copy
download <uuid|path> [dir] Download a remote file or folder
-r, --recursive Required to download a folder
-s, --silent Suppress all output except errors
Other:
uninstall Uninstall brick
Ett vanligt förstagångsflöde ser ut så här:
brick login
brick switch-accounts # behövs bara om din användare har fler än ett konto
brick sync
TIP
De globala flaggorna (-h, -v, --no-upgrade-check, --no-control-api) måste anges före kommandot. Alltså brick --no-upgrade-check sync -d, inte brick sync -d --no-upgrade-check.
Kontohantering
# Logga in via webbläsaren
brick login
# Byt aktivt konto
brick switch-accounts
# Visa inloggad användare och kontodetaljer
brick whoami
# Rensa alla lokala inställningar och konfigurera om Brick från grunden
brick restart
Lagringssynkronisering
# Starta synkroniseringen: synkar storageSyncFolder mot Bricks API och
# bevakar sedan mappen för ändringar tills du avbryter med Ctrl+C
brick sync
# Koppla loss synkroniseringen till en bakgrundsprocess (daemon) efter
# att inloggning lyckats och Bricks API är nåbart
brick sync -d
brick sync --daemon
# Tillåt fjärrstyrning via Brick-webappen (kan också aktiveras permanent
# via konfigurationsfilen, se onboardingen nedan)
brick sync -r
brick sync --remote-control
# Exponera ytterligare en mapp för klienter när fjärrstyrning är
# aktiverat (flaggan kan upprepas för fler mappar)
brick sync --agent-root /sökväg/till/mapp
# Välj vilka mappar som ska uteslutas från synk (raderar lokala kopior)
brick sync -s
brick sync --selective-sync
# Lista de mappar som för närvarande är uteslutna från synk
brick sync --list-selective-sync
Filöverföring
# Ladda upp en fil till kontots rotmapp
brick upload rapport.pdf
# Ladda upp en fil till en specifik mapp i molnet
brick upload rapport.pdf /Dokument/Rapporter
# Ladda upp en hel mapp (kräver -r)
brick upload -r ~/Bilder /Bilder
# Ladda ner en fil till aktuell mapp
brick download /Dokument/rapport.pdf
# Ladda ner en hel mapp till en vald lokal mapp (kräver -r)
brick download -r /Dokument ~/Nedladdningar
Se Ladda upp och ner nedan för detaljerna.
Övrigt
# Inaktivera automatisk uppdatering som annars körs vid varje start
brick --no-upgrade-check sync
# Inaktivera den lokala status-/kontroll-API:et som annars används av
# system-tray-appen
brick --no-control-api sync
# Avinstallera brick (binär, konfigurationsfil, shell-completions och
# man-sida - du väljer själv vad som ska tas bort)
brick uninstall
# Visa hjälptext (samma sak som att köra brick utan argument)
brick -h
brick --help
# Visa versionsinformation
brick -v
brick --version
Första körningen
Första gången du kör brick sync - innan du har loggat in eller konfigurerat en synkmapp - guidar en interaktiv onboarding-guide dig genom följande steg, i tur och ordning:
1. Inloggning
Om du inte redan är inloggad öppnas din webbläsare mot Brick för autentisering. Väljer du att inte logga in avbryts körningen.
2. Val av synkmapp
Du får välja var på datorn dina filer ska synkroniseras:
Choose a sync folder
> Use ~/Brick
Pick existing folder in ~
Create folder
- Use ~/Brick - skapar och använder standardmappen
~/Brick. - Pick existing folder - låter dig bläddra fram en befintlig mapp.
- Create folder - låter dig skriva in namnet (eller en relativ sökväg) på en ny mapp som skapas åt dig.
3. Konflikthantering vid första synk
Om den valda mappen inte är tom frågar Brick hur eventuella filer som redan finns på båda sidor (lokalt och i molnet) ska hanteras. Se Konflikthantering nedan för de tre alternativen.
4. Vad ska synkas
Om ditt konto redan innehåller mappar i molnet får du välja om allt ska synkas, eller om du vill utesluta vissa toppnivåmappar redan från start:
Sync scope
> Sync all folders from Brick (1.2 GB)
Pick which folders to sync
5. Fjärråtkomst (remote control)
Till sist frågar guiden om du vill kunna komma åt filer på den här enheten på distans via Brick-webappen:
Do you want to remotely access files on this device via Brick? (Y/n):
Svarar du ja väljer du sedan vilken mapp som ska vara tillgänglig - din hemmapp eller en valfri mapp du bläddrar fram. Läs mer under Remote control.
När alla steg är avklarade sammanfattas de gjorda valen som en numrerad checklista i terminalen, till exempel:
1. ✅ Logged in to account: acme
2. ✅ Sync folder selected (~/Brick)
3. ✅ Folders selected (all)
4. ✅ Remote file access enabled (root folder: ~)
5. ✅ Done and ready to go!
Dessa val sparas i konfigurationsfilen och används framöver när du kör brick sync.
Ladda upp och ner
brick upload och brick download överför en enskild fil eller ett helt mappträd vid sidan av den tvåvägssynkade mappen - praktiskt för en engångsöverföring, utan att först behöva sätta upp (eller röra) en synkmapp:
brick upload [-r] [-s] [--overwrite] <lokal-fil|lokal-mapp> [fjärrsökväg|uuid]
brick download [-r] [-s] <uuid|fjärrsökväg> [lokal-målmapp]
Båda kommandona accepterar antingen ett nod-UUID eller en sökväg där en sådan behövs:
- Källan till
downloadoch målet föruploadkan vara ett nod-UUID (till exempel kopierat från Brick-webappen) eller en sökväg som/Dokument/Rapporter- som tolkas från kontots rotmapp på precis samma sätt som i webappen. - Målet för
uploadkan utelämnas helt, och filen eller mappen hamnar då i kontots rotmapp. Anger du en sökväg som inte finns skapas den åt dig. - Målmappen för
downloadkan också utelämnas, och filerna hamnar då i den mapp du står i. Mappen skapas om den inte redan finns.
Hela mappar. En mapp som källa kräver -r/--recursive - utan flaggan gör brick ingenting och avslutas med felkod, i stället för att gissa att du menade hela mappträdet. Med -r skriver brick först ut en sammanfattning (Uploading 42 files in 6 folders (18.2 MB)...) innan något överförs, och visar sedan en förloppsindikator per fil.
Fel under en överföring avbryter inte hela körningen - brick fortsätter med resterande filer, listar sedan alla misslyckanden på slutet och avslutas med felkod om något gick fel.
Konflikter.
downloadskriver över en befintlig lokal fil med samma namn.uploadskapar som standard en kopia (rapport.pdf→rapport (copy).pdf), precis som Brick-webappen gör när namnet redan är upptaget av en fil i samma mapp. Lägg till--overwriteför att i stället ersätta innehållet i den befintliga filen i molnet.
Tyst läge. -s/--silent döljer allt utom fel - ingen inledande sammanfattning, inga förloppsindikatorer och ingen avslutande rad. Användbart i ett cron-jobb eller skript som bara bryr sig om felkoden.
Remote control
Remote control ger dig möjlighet att bläddra i och komma åt filer på den här enheten på distans, direkt via Brick-webappen - utan att de filerna behöver ligga i din synkade mapp eller laddas upp till molnet.
Funktionen aktiveras antingen genom att svara ja på frågan under onboardingen vid första körningen, eller genom att lägga till flaggan -r/--remote-control vid varje enskild körning:
brick sync -r
Väljer du att aktivera det permanent under onboardingen sparas det i konfigurationsfilen (remoteControl: true), och du behöver då inte ange -r igen - flaggan fungerar dock fortfarande som en engångsaktivering om du tackade nej från början men vill slå på den för en enstaka körning.
Som standard exponeras din hemmapp. Vill du ge fjärråtkomst till fler mappar - eller andra mappar än hemmappen - använder du --agent-root, som kan upprepas för att lägga till flera mappar:
brick sync --agent-root ~/Dokument --agent-root /mnt/extern-disk
Anslutningen mellan enheten och Brick-webappen upprättas via en säker tunnel mot Bricks API så själva enheten behöver inte vara nåbar utifrån eller ha några öppna portar.
Konfigurationsfil
Brick sparar sina inställningar i en YAML-fil, ~/.config/brick/config.yaml.
Filen skapas automatiskt (med rättigheterna 0600, det vill säga bara läsbar av dig) första gången du kör brick sync, och innehåller följande fält:
| Fält | Beskrivning |
|---|---|
clientId | Ett unikt ID som identifierar den här installationen av klienten. |
accessToken | Access-token för det inloggade kontot. |
refreshToken | Refresh-token, används för att förnya accessToken när den går ut. |
idToken | ID-token från inloggningen. |
activeAccountId | Vilket konto som för närvarande är aktivt (styrs via brick switch-accounts). |
accounts | En karta över varje konto du någonsin synkat, nyckeln till varje post är kontots ID. |
agentRoots | Lista över extra mappar som exponeras för fjärrklienter när remote control är aktiverat. |
remoteControl | Om true är remote control alltid påslaget, utan att -r behöver anges vid varje körning. |
Varje post under accounts har i sin tur egna inställningar, kopplade till just det kontot:
| Fält | Beskrivning |
|---|---|
storageSyncFolder | Den lokala mapp som synkas mot Brick för det här kontot. |
excludeDirs | Lista över undermappar (relativt storageSyncFolder) som är uteslutna från synk, se selektiv synk. |
Filen kan redigeras för hand om du vill, men de flesta inställningarna sätts enklast genom att köra motsvarande kommando (t.ex. brick sync --selective-sync eller onboarding-guiden) i stället.
Konflikthantering
Vid första körningen
Om du väljer en synkmapp som redan innehåller filer när du synkar mot ett konto som också redan har filer i molnet, kan samma fil av naturliga skäl finnas på båda ställena utan att Brick ännu vet om de hör ihop. Du får då välja hur sådana dubbletter ska hanteras, en gång, innan den första synkroniseringen körs:
The picked folder contains files. How should possible conflicts be
handled on first sync?
Conflict resolution
> Overwrite any duplicate files on this device.
Overwrite any duplicate files on Brick.
Make a copy of any duplicate files (so nothing is lost).
- Overwrite any duplicate files on this device - filen i molnet vinner och laddas ner, den lokala filen skrivs över.
- Overwrite any duplicate files on Brick - den lokala filen vinner och laddas upp, filen i molnet skrivs över.
- Make a copy of any duplicate files - inget skrivs över. Den lokala filen döps om (så att den får ett unikt namn) och båda versionerna bevaras.
Valet gäller enbart den allra första synkroniseringen av just den mappen - när en fil väl är synkad en gång känner Brick till dess historik och det här steget behövs inte igen.
Vid framtida körningar
Efter den första synkroniseringen håller Brick reda på varje fils senaste kända lokala och fjärr-tillstånd (hash respektive ETag). Det gör att den kan avgöra exakt vad som hänt sen sist:
- Har filen bara ändrats på ena sidan (lokalt eller i molnet) speglas ändringen automatiskt till den andra sidan - utan att fråga dig.
- Har filen tagits bort på ena sidan och är oförändrad på den andra, speglas borttagningen till den andra sidan också.
- Har filen ändrats på båda sidor sedan den senast synkades - en genuin konflikt - vinner alltid versionen i molnet, och den lokala ändringen skrivs över.
Det här sker helt automatiskt i bakgrunden, både när Brick körs i förgrunden och som daemon (brick sync -d).