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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
# config.toml - Configuração completa do RustDriveSync
#
# PERFIS DE CONFIGURAÇÃO RECOMENDADOS:
#
# 📄 PERFIL 1: Documentos e Fotos (Arquivos Pequenos)
# - max_file_size_mb: 100
# - chunk_size_mb: 5
# - max_concurrent_uploads: 4-8
# - max_attempts: 3
#
# 💾 PERFIL 2: Backups Médios (100 MB - 1 GB)
# - max_file_size_mb: 1024
# - chunk_size_mb: 16
# - max_concurrent_uploads: 2-4
# - max_attempts: 4
#
# 🗄️ PERFIL 3: Backups SQL Grandes (6-8 GB) - CONFIGURAÇÃO ATUAL
# - max_file_size_mb: 10240 (10 GB)
# - chunk_size_mb: 32
# - max_concurrent_uploads: 1-2
# - max_attempts: 5
# - max_delay_seconds: 120
#
# 🎥 PERFIL 4: Vídeos e Arquivos Muito Grandes (> 10 GB)
# - max_file_size_mb: 50000 (50 GB)
# - chunk_size_mb: 64
# - max_concurrent_uploads: 1
# - max_attempts: 7
# - max_delay_seconds: 180
#
# Este arquivo está configurado para o PERFIL 3 (Backups SQL Grandes)
# Ajuste conforme sua necessidade!
#===============================================================================
# CONFIGURAÇÕES GERAIS
#===============================================================================
[]
# Nível de log: trace, debug, info, warn, error
= "info"
# Arquivo de log (deixe vazio para apenas stdout)
# log_file = "./logs/rustdrivesync.log"
# Formato do log: "text" ou "json"
= "text"
#===============================================================================
# PASTA DE ORIGEM
#===============================================================================
[]
# Caminho absoluto da pasta a sincronizar
= "/home/usuario/documentos"
# Incluir subpastas recursivamente
= true
# Ignorar arquivos ocultos (começam com .)
= true
# Seguir links simbólicos
= false
# Padrões de arquivos/pastas a ignorar (glob patterns)
= [
# Arquivos temporários
"*.tmp",
"*.temp",
"*.swp",
"*~",
# Logs
"*.log",
# Build artifacts
"target/",
"node_modules/",
"__pycache__/",
"*.pyc",
".venv/",
# Version control
".git/",
".svn/",
".hg/",
# IDE/Editor
".idea/",
".vscode/",
"*.sublime-*",
# OS files
".DS_Store",
"Thumbs.db",
"desktop.ini",
]
#===============================================================================
# GOOGLE DRIVE
#===============================================================================
[]
# Arquivo com credenciais OAuth2 (baixado do Google Console)
= "./credentials.json"
# Arquivo onde tokens serão salvos
= "./token.json"
# ID da pasta de destino no Google Drive (encontre na URL do Drive)
# Exemplo: https://drive.google.com/drive/folders/1ABC123xyz
= "1ABC123xyz"
# OU nome da pasta (será criada na raiz se não existir)
# target_folder_name = "Backup-Documentos"
# Escopos OAuth2 necessários
= [
"https://www.googleapis.com/auth/drive.file"
]
#===============================================================================
# SINCRONIZAÇÃO
#===============================================================================
[]
# Modo de operação: "once" (única vez) ou "watch" (monitoramento contínuo)
= "once"
# Intervalo entre verificações em modo watch (segundos)
= 300
# Como resolver conflitos quando arquivo já existe no Drive
# - "overwrite": substitui o arquivo no Drive
# - "skip": mantém o arquivo do Drive, não faz upload
# - "rename": renomeia o arquivo local antes do upload (arquivo_1.txt)
= "overwrite"
# Tamanho máximo de arquivo para upload (MB)
# IMPORTANTE: Ajuste conforme seu caso de uso
# - Documentos/Fotos pequenas: 100 (padrão)
# - Backups médios: 1024 (1 GB)
# - Backups SQL grandes: 10240 (10 GB)
# - Vídeos/Arquivos muito grandes: 50000 (50 GB)
# Limite do Google Drive: 5 TB (5.120.000 MB)
= 10240
# Tamanho do chunk para upload resumível (MB)
# IMPORTANTE: Chunks maiores = uploads mais rápidos para arquivos grandes
# - Arquivos pequenos (< 100 MB): 5 (padrão)
# - Arquivos médios (100 MB - 1 GB): 16
# - Arquivos grandes (> 1 GB): 32-64
# Recomendação para backups SQL: 32
= 32
# Número máximo de uploads simultâneos
# IMPORTANTE: Arquivos grandes consomem mais banda
# - Arquivos pequenos: 4-8 (padrão)
# - Arquivos médios: 2-4
# - Backups grandes (6-8 GB): 1-2 (evita saturar conexão)
= 2
# Verificar integridade após upload (compara MD5)
= true
# Manter estrutura de pastas no destino
# - true: preserva hierarquia de diretórios local no Google Drive
# Exemplo: projeto/src/main.rs → RustDriveSync/projeto/src/main.rs
# - false: todos os arquivos ficam na pasta raiz
# Exemplo: projeto/src/main.rs → RustDriveSync/main.rs
= true
# Deletar arquivos no Drive quando deletados localmente
# CUIDADO: pode causar perda de dados!
= false
#===============================================================================
# RETRY E RESILIÊNCIA
#===============================================================================
[]
# Número máximo de tentativas por arquivo
# IMPORTANTE: Arquivos grandes têm mais chance de timeout
# - Arquivos pequenos: 3 (padrão)
# - Backups grandes: 5-7 (recomendado)
= 5
# Delay inicial entre tentativas (segundos)
# IMPORTANTE: Dar mais tempo para recuperação em arquivos grandes
= 2
# Fator de multiplicação do delay (exponential backoff)
# 2.0 = dobra o delay a cada tentativa (2s → 4s → 8s → 16s → 32s)
= 2.0
# Delay máximo entre tentativas (segundos)
# IMPORTANTE: Aumentar para arquivos grandes (permite mais tempo de recuperação)
# - Arquivos pequenos: 60
# - Backups grandes: 120-180
= 120
#===============================================================================
# NOTIFICAÇÕES (Opcional)
#===============================================================================
[]
# Habilitar notificações
= false
# Notificar quando sync completar com sucesso
= true
# Notificar em caso de erro
= true
# Tipo de notificação: "desktop" ou "webhook"
= "desktop"
# URL do webhook (se type = "webhook")
# webhook_url = "https://hooks.slack.com/services/..."
#===============================================================================
# ESTADO E CACHE
#===============================================================================
[]
# Arquivo de estado (rastreia arquivos sincronizados)
= "./state.json"
# Salvar estado a cada N arquivos sincronizados
= 10
# Limpar estado de arquivos deletados após N dias
= 30