Skip to content

Commit fe21d53

Browse files
A Dynamic Collection of Shell Scripts with Educational Purpose
1 parent 1d659bf commit fe21d53

6 files changed

Lines changed: 521 additions & 73 deletions

File tree

aliases/helps.fish

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ alias sed_man='helps sed_man'
44
alias sed_info='helps sed_info'
55
alias sed_help='helps sed_help'
66

7+
alias sed_help='helps sed_help'
8+
9+
alias rclone_help='helps rclone_help'
10+
711
alias swap_help='helps swap_help'
812

913
alias docker_help='helps docker_basic'

aliases/helps.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ alias sed_man='helps sed_man'
44
alias sed_info='helps sed_info'
55
alias sed_help='helps sed_help'
66

7-
alias rclone_help='helps sed_help'
7+
alias sed_help='helps sed_help'
8+
9+
alias rclone_help='helps rclone_help'
810

911
alias swap_help='helps swap_help'
1012

scripts/ble-simple

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -696,18 +696,18 @@ _cs_do_shift_tab() {
696696
_cs_redraw
697697
}
698698

699-
# _cs_quote_completion() {
700-
# local completion="$1"
701-
# if [[ "$completion" == *' '* ]]; then
702-
# completion="${completion/#\~/$HOME}"
703-
# completion="${completion//\"/}"
704-
# # Trailing slash será preservada dentro das aspas
705-
# completion="\"${completion}\""
706-
# fi
707-
# printf '%s' "$completion"
708-
# }
709-
710699
_cs_quote_completion() {
700+
local completion="$1"
701+
if [[ "$completion" == *' '* ]]; then
702+
completion="${completion/#\~/$HOME}"
703+
completion="${completion//\"/}"
704+
# Trailing slash será preservada dentro das aspas
705+
completion="\"${completion}\""
706+
fi
707+
printf '%s' "$completion"
708+
}
709+
710+
f_cs_quote_completion() {
711711
local completion="$1"
712712
local trailing_slash=""
713713
[[ "$completion" == */ ]] && trailing_slash="/" && completion="${completion%/}"
Lines changed: 196 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
O `rclone` é um programa de linha de comando criado especificamente para sincronizar arquivos com a nuvem. Muitos o chamam de "*rsync for cloud storage*" . Ele é a ferramenta padrão e mais confiável para essa tarefa.
1+
O `rclone` é um programa de linha de comando criado especificamente para sincronizar arquivos com a nuvem. Muitos o chamam de "*rsync for cloud storage*". Ele é a ferramenta padrão e mais confiável para essa tarefa.
22

33
Aqui está o guia passo a passo para configurar e usar o `rclone` para sincronizar uma pasta local com o Google Drive no Linux.
44

@@ -11,6 +11,7 @@ No Ubuntu ou Debian, use o seguinte comando:
1111
sudo apt update && sudo apt install rclone
1212
```
1313

14+
---
1415

1516
### 2. Configurar a Conexão com o Google Drive
1617

@@ -28,54 +29,225 @@ rclone config
2829
6. Após a autorização, volte ao terminal e pressione `Enter`. Diga `n` quando perguntar sobre configurar como um "Shared Drive".
2930
7. Por fim, digite `q` para sair da configuração.
3031

32+
---
33+
34+
### 3. Solução de Problemas na Configuração
35+
36+
#### Erro: "can't make bucket without project number"
37+
38+
Se ao tentar sincronizar você encontrar um erro como:
39+
40+
```
41+
ERROR : arquivo.txt: Failed to copy: can't make bucket without project number
42+
```
43+
44+
Isso significa que o remoto foi configurado com o tipo errado: **Google Cloud Storage** em vez de **Google Drive**. O Google Cloud Storage é um serviço diferente (buckets na nuvem) e exige um número de projeto, enquanto o Google Drive comum não.
45+
46+
##### Como verificar o tipo do remoto
47+
48+
Liste os remotos configurados:
49+
```bash
50+
rclone listremotes
51+
```
52+
Isso mostrará algo como `googleDrive:` (ou o nome que você deu).
53+
54+
Confira o tipo do remoto:
55+
```bash
56+
rclone config show googleDrive:
57+
```
58+
Substitua `googleDrive` pelo nome do seu remoto. Procure a linha:
59+
```
60+
type = ???
61+
```
62+
Se estiver `type = google cloud storage`, está errado. O correto para o Google Drive é `type = drive`.
63+
64+
##### Como corrigir
65+
66+
Apague o remoto errado:
67+
```bash
68+
rclone config delete googleDrive
69+
```
70+
71+
Crie um novo remoto com o tipo correto:
72+
```bash
73+
rclone config
74+
```
75+
- Escolha `n` (New remote)
76+
- Nome: `googleDrive` (ou como preferir)
77+
- **Tipo: escolha `drive`** (e não `google cloud storage`!)
78+
- As próximas opções (`client_id`, `client_secret`, `scope`, `root_folder_id`, `service_account_file`) podem ser deixadas em branco — apenas pressione `Enter` em todas.
79+
- Quando perguntar `Use web browser to authenticate?`, diga `y` e faça login no navegador.
80+
- Diga `n` quando perguntar sobre configurar como um "Shared Drive" (a menos que esteja usando um).
81+
- Confirme a configuração com `y` e depois digite `q` para sair.
82+
83+
Após isso, o comando de sincronização funcionará normalmente.
3184

32-
### 3. Sincronizar Sua Pasta
85+
#### Sobre a opção `object_acl`
3386

34-
Agora você pode usar o comando `sync`. Ele torna a pasta de destino **idêntica** à de origem, ou seja, copia arquivos novos/modificados e **apaga** os que existem apenas no destino.
87+
Em versões recentes do `rclone`, durante a configuração pode aparecer uma pergunta como:
3588

36-
**Cuidado:** Use a opção `--dry-run` primeiro (veja abaixo) para evitar perda acidental de dados .
89+
```
90+
Option object_acl.
91+
Access Control List for new objects.
92+
Choose a number from below, or type in your own value.
93+
Press Enter to leave empty.
94+
/ Object owner gets OWNER access.
95+
1 | All Authenticated Users get READER access.
96+
\ (authenticatedRead)
97+
...
98+
4 | Default if left blank.
99+
\ (private)
100+
...
101+
```
102+
103+
A escolha mais segura e recomendada é a opção **4** (`private`), que torna os arquivos acessíveis apenas por você (o dono). Isso equivale ao comportamento padrão se você deixasse em branco. Digite `4` e pressione `Enter`.
104+
105+
---
106+
107+
### 4. Escolhendo o Comando Certo: `sync` vs `copy` vs `bisync`
108+
109+
Antes de sincronizar, é fundamental entender a diferença entre os comandos, especialmente se você planeja usar múltiplos dispositivos (PC e celular, por exemplo) enviando para a mesma pasta no Google Drive.
110+
111+
#### `rclone sync` — Espelho (Destrutivo)
112+
113+
O comando `sync` torna a pasta de destino **idêntica** à de origem. Isso significa que ele **apaga** qualquer arquivo no destino que não exista na origem.
114+
115+
**Cuidado:** Se você usar `sync` de dois dispositivos diferentes para a mesma pasta do Drive, o segundo dispositivo a executar o comando poderá apagar os arquivos enviados pelo primeiro.
116+
117+
#### `rclone copy` — Apenas Adiciona/Atualiza (Recomendado)
118+
119+
O comando `copy` **apenas adiciona** arquivos novos ou atualiza os existentes no destino, sem nunca apagar nada:
37120

38-
A sintaxe básica é:
39121
```bash
40-
rclone sync /caminho/para/sua/pasta/local googleDrive:/caminho/na/nuvem
122+
rclone copy ~/.prompts GoogleDrive:Notebooks/prompts
123+
```
124+
125+
**Comportamento:**
126+
- Copia arquivos que existem na origem mas não no destino
127+
- Sobrescreve arquivos no destino **apenas se** o da origem for mais recente
128+
- **Nunca apaga** nada no destino
129+
- Ideal para usar no PC e no celular sem medo de perda de dados
130+
- Seguro para múltiplos dispositivos enviando para a mesma pasta
131+
132+
#### `rclone bisync` — Sincronização Bidirecional
133+
134+
Para sincronização completa nos dois sentidos (alterações locais vão para nuvem e vice-versa):
135+
136+
```bash
137+
rclone bisync ~/.prompts GoogleDrive:Notebooks/prompts
138+
```
139+
140+
**Comportamento:**
141+
- Sincroniza nos dois sentidos
142+
- Arquivos novos em qualquer lado são copiados para o outro
143+
- Arquivos apagados em um lado são apagados no outro
144+
- Detecta conflitos (mesmo arquivo modificado nos dois lados)
145+
146+
**Cuidado:** Na primeira vez, sempre faça um backup ou use `--dry-run`:
147+
```bash
148+
rclone bisync ~/.prompts GoogleDrive:Notebooks/prompts --dry-run
149+
```
150+
151+
Para manter arquivos deletados na lixeira do Google Drive em vez de excluir permanentemente:
152+
```bash
153+
rclone bisync ~/.prompts GoogleDrive:Notebooks/prompts --drive-use-trash
154+
```
155+
156+
#### `rclone sync` com `--backup-dir` — Histórico de Alterações
157+
158+
Se quiser usar o `sync` mas manter um histórico do que foi apagado:
159+
160+
```bash
161+
rclone sync ~/.prompts GoogleDrive:Notebooks/prompts --backup-dir GoogleDrive:Notebooks/backup_$(date +%Y%m%d)
162+
```
163+
164+
Isso move os arquivos que seriam apagados para uma pasta de backup com a data atual, em vez de excluí-los definitivamente.
165+
166+
#### Resumo Comparativo
167+
168+
| Comando | Adiciona novos | Atualiza existentes | Apaga no destino | Bidirecional | Ideal para |
169+
|:---|:---:|:---:|:---:|:---:|:---|
170+
| `sync` | Sim | Sim | **Sim** | Não | Backup espelho único |
171+
| `copy` | Sim | Sim | **Não** | Não | **Múltiplos dispositivos** |
172+
| `bisync` | Sim | Sim | Sim | **Sim** | Sincronização completa |
173+
174+
**Recomendação para múltiplos dispositivos:** Use `rclone copy` tanto no PC quanto no celular (Termux) para enviar arquivos para a mesma pasta do Drive sem risco de um apagar os dados do outro:
175+
176+
```bash
177+
# No PC (Arch Linux)
178+
rclone copy ~/.prompts GoogleDrive:Notebooks/prompts --progress
179+
180+
# No Termux (Celular)
181+
rclone copy ~/.prompts GoogleDrive:Notebooks/prompts --progress
182+
```
183+
184+
---
185+
186+
### 5. Sincronizar Sua Pasta
187+
188+
Agora você pode usar o comando escolhido. A sintaxe básica é a mesma para todos:
189+
190+
```bash
191+
rclone sync /caminho/para/sua/pasta/local googleDrive:caminho/na/nuvem
41192
```
42193
- **`/caminho/para/sua/pasta/local`**: Substitua pelo caminho da pasta no seu computador.
43194
- **`googleDrive:`**: É o nome que você deu ao remote no passo 2.
44-
- **`/caminho/na/nuvem`**: É o caminho dentro do seu Google Drive.
195+
- **`caminho/na/nuvem`**: É o caminho dentro do seu Google Drive.
196+
197+
**Importante sobre a sintaxe do caminho remoto:**
198+
No rclone, a barra no início do caminho remoto **não** deve ser usada. A sintaxe correta é:
45199

46-
**Exemplo prático**:
47-
Para sincronizar a pasta `Documentos/Backup` local com a pasta `MeuBackup` no Drive, use:
200+
- **Certo:** `googleDrive:Notebooks/prompts`
201+
- **Errado:** `googleDrive:/Notebooks/prompts`
202+
203+
Se você usar a barra, o rclone pode interpretar como um caminho absoluto na raiz, causando comportamentos inesperados. Use sempre o caminho relativo à raiz do Drive, sem barra inicial.
204+
205+
**Exemplo prático com `copy` (recomendado):**
206+
Para enviar arquivos da pasta `Documentos/Backup` local para a pasta `MeuBackup` no Drive sem apagar nada:
207+
```bash
208+
rclone copy ~/Documentos/Backup googleDrive:MeuBackup
209+
```
210+
211+
**Exemplo prático com `sync` (apenas se for um backup espelho único):**
48212
```bash
49-
rclone sync ~/Documentos/Backup googleDrive:/MeuBackup
213+
rclone sync ~/Documentos/Backup googleDrive:MeuBackup
50214
```
51-
Se a pasta `MeuBackup` não existir no Drive, o `rclone` a criará automaticamente .
215+
**Atenção:** Este comando apagará qualquer arquivo em `MeuBackup` que não exista em `~/Documentos/Backup`.
52216

53-
### 4. Principais Opções e Recomendações
217+
Se a pasta de destino não existir no Drive, o `rclone` a criará automaticamente.
218+
219+
---
220+
221+
### 6. Principais Opções e Recomendações
54222

55223
Aqui estão as opções mais úteis para um uso seguro e eficiente:
56224

57225
| Opção | Descrição |
58226
| :--- | :--- |
59-
| **`--dry-run`** | **Essencial para testes.** Mostra o que seria copiado ou deletado, sem fazer nenhuma alteração. Use sempre antes de um `sync` real. Ex: `rclone sync pasta/ googleDrive:/pasta --dry-run` . |
60-
| **`--progress`** ou `-P` | Mostra o progresso da transferência em tempo real, com velocidade e ETA. Ex: `rclone sync pasta/ googleDrive:/pasta -P` . |
61-
| **`--update`** | Copia apenas arquivos da origem que são mais novos que os do destino. Útil para evitar sobrescrever arquivos mais recentes na nuvem . |
62-
| **`--exclude-from`** | Permite ignorar arquivos ou pastas específicos, como `*.tmp` ou `*.log`. Você cria um arquivo de lista (um padrão por linha) e o referencia. Ex: `rclone sync pasta/ drive:backup --exclude-from ~/rclone-exclude.txt` . |
63-
| **`--transfers=N`** | Aumenta a velocidade fazendo N transferências em paralelo. O padrão é 4. Ex: `--transfers=16` . |
64-
| **`--drive-use-trash=true`** | Move os arquivos deletados durante o `sync` para a lixeira do Google Drive, em vez de apagá-los definitivamente. É mais seguro. |
227+
| **`--dry-run`** | **Essencial para testes.** Mostra o que seria copiado ou deletado, sem fazer nenhuma alteração. Use sempre antes de um `sync` ou `bisync` real. Ex: `rclone sync pasta/ googleDrive:pasta --dry-run`. |
228+
| **`--progress`** ou `-P` | Mostra o progresso da transferência em tempo real, com velocidade e ETA. Ex: `rclone copy pasta/ googleDrive:pasta -P`. |
229+
| **`--update`** | Copia apenas arquivos da origem que são mais novos que os do destino. Útil para evitar sobrescrever arquivos mais recentes na nuvem. |
230+
| **`--exclude-from`** | Permite ignorar arquivos ou pastas específicos, como `*.tmp` ou `*.log`. Você cria um arquivo de lista (um padrão por linha) e o referencia. Ex: `rclone copy pasta/ drive:backup --exclude-from ~/rclone-exclude.txt`. |
231+
| **`--transfers=N`** | Aumenta a velocidade fazendo N transferências em paralelo. O padrão é 4. Ex: `--transfers=16`. |
232+
| **`--drive-use-trash=true`** | Move os arquivos deletados durante o `sync` ou `bisync` para a lixeira do Google Drive, em vez de apagá-los definitivamente. É mais seguro. |
233+
234+
---
65235

66-
### 5. Automatizar e Simplificar (Bônus)
236+
### 7. Automatizar e Simplificar (Bônus)
67237

68238
- **Agendar Sincronização**: Para rodar automaticamente, como um backup diário, agende o comando no `cron`. Digite `crontab -e` e adicione uma linha como:
69-
`0 23 * * * /usr/bin/rclone sync /home/seu-usuario/Documentos googleDrive:/Backup-Documentos`
70-
Isso executará a sincronização todos os dias às 23:00 .
239+
```bash
240+
0 23 * * * /usr/bin/rclone copy /home/seu-usuario/Documentos googleDrive:Backup-Documentos
241+
```
242+
Isso executará a cópia todos os dias às 23:00. (Note o uso de `copy` em vez de `sync` para evitar perda acidental de dados.)
71243

72-
- **Criar um Atalho**: Para não digitar o comando toda vez, crie um script. Salve o comando em um arquivo `.sh`, torne-o executável com `chmod +x script.sh` e execute-o quando quiser .
244+
- **Criar um Atalho**: Para não digitar o comando toda vez, crie um script. Salve o comando em um arquivo `.sh`, torne-o executável com `chmod +x script.sh` e execute-o quando quiser.
73245

74246
---
75247

76248
### Resumo e Alternativa (rsync com Montagem)
77249

78-
Se o seu objetivo é **absolutamente necessário** usar o comando `rsync`, você pode seguir um caminho alternativo: montar o Google Drive como se fosse uma pasta no seu computador usando a ferramenta `google-drive-ocamlfuse` e, em seguida, usar o `rsync` normal .
250+
Se o seu objetivo é **absolutamente necessário** usar o comando `rsync`, você pode seguir um caminho alternativo: montar o Google Drive como se fosse uma pasta no seu computador usando a ferramenta `google-drive-ocamlfuse` e, em seguida, usar o `rsync` normal.
79251

80252
```bash
81253
# Instalar e montar o Google Drive
@@ -89,4 +261,4 @@ rsync -uvrt --progress ~/Documentos/Backup ~/google-drive/MeuBackup
89261
# Desmontar quando terminar
90262
fusermount -u ~/google-drive
91263
```
92-
No entanto, **a recomendação oficial e mais robusta é usar o `rclone`** .
264+
No entanto, **a recomendação oficial e mais robusta é usar o `rclone`**.

0 commit comments

Comments
 (0)