Servidor
Nextcloud e sincronização com AWS S3.
Nextcloud — configurações
SANITIZADO: segredos removidos. Onde aparecer
SEU_* / SUA_*, preencha com seus valores reais.
Arquivo: /var/www/html/config/config.php
config.php (referência)
<?php
$CONFIG = array (
'htaccess.RewriteBase' => '/',
'memcache.local' => '\\OC\\Memcache\\APCu',
'apps_paths' => array (
0 => array ('path' => '/var/www/html/apps', 'url' => '/apps', 'writable' => false),
1 => array ('path' => '/var/www/html/custom_apps', 'url' => '/custom_apps', 'writable' => true),
),
'upgrade.disable-web' => true,
'instanceid' => 'SEU_INSTANCE_ID',
'passwordsalt' => 'SEU_PASSWORD_SALT',
'secret' => 'SEU_SECRET',
'trusted_domains' => array (
0 => 'SEU_IP_LOCAL:PORTA',
1 => 'seu.dominio.com',
),
'datadirectory' => '/var/www/html/data',
'dbtype' => 'mysql',
'dbname' => 'SEU_DB_NAME',
'dbhost' => 'SEU_DB_HOST',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'SEU_DB_USER',
'dbpassword' => 'SUA_SENHA_DO_BANCO',
'installed' => true,
);
AWS S3 — CLI + sync
Segurança: nunca coloque Access Key/Secret diretamente em scripts. Use
aws configure,
variáveis de ambiente ou IAM Roles.
Instalar AWS CLI (Linux)
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
sudo apt install unzip -y && unzip awscliv2.zip
sudo ./aws/install
aws --version
Configurar credenciais
Opção 1 — recomendada:
aws configure
Opção 2 — variáveis de ambiente:
export AWS_ACCESS_KEY_ID="SEU_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="SEU_SECRET_ACCESS_KEY"
export AWS_DEFAULT_REGION="us-east-1"
Sincronização S3
--exact-timestamps melhora fidelidade por timestamp.
--delete mantém espelho (remove no S3 o que foi removido localmente) — use com cuidado.
aws s3 sync /caminho/local s3://seu-bucket/pasta --exact-timestamps
aws s3 sync /caminho/local s3://seu-bucket/pasta --delete
Script de sync (sync_s3.sh)
#!/bin/bash
set -euo pipefail
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
export HOME=/home/SEU_USUARIO
# Credenciais: prefira ~/.aws/credentials ou IAM Role
export AWS_ACCESS_KEY_ID="SEU_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="SEU_SECRET_ACCESS_KEY"
export AWS_DEFAULT_REGION="us-east-1"
LOCAL_PATH="/caminho/local"
S3_BUCKET="s3://seu-bucket"
LOG="/var/log/sync_s3.log"
if /usr/bin/aws s3 sync "$LOCAL_PATH" "$S3_BUCKET" --delete; then
echo "$(date) — sync OK" >> "$LOG"
else
echo "$(date) — ERRO no sync" >> "$LOG"
fi
chmod +x sync_s3.sh && ./sync_s3.sh
Agendar com Cron
crontab -e
# todo dia às 23h
0 23 * * * /caminho/para/sync_s3.sh >> /var/log/sync_s3.log 2>&1
# 2 vezes por dia (0h e 12h)
0 0,12 * * * /caminho/para/sync_s3.sh
# 1 vez por semana (segunda-feira)
0 0 * * 1 /caminho/para/sync_s3.sh