Language / Idioma: English | Português
- Overview
- Features
- Installation
- Configuration
- Usage
- Examples
- Security Considerations
- Files Generated
- License
Automated FTP deployment tool that intelligently uploads only changed files to your FTP server. Uses local caching and file hashing to minimize upload time and bandwidth usage.
- Smart Upload: Only uploads modified files based on timestamps and MD5 hashes
- File Rename Detection: Automatically detects renamed files and performs server-side renames
- Exclude Patterns: Support for file and folder exclusion patterns
- Dry Run Mode: Preview what would be uploaded without making changes
- Cache Management: Maintains local cache to track uploaded files
- Nested Directory Support: Automatically creates remote directory structure
- Ensure Python 3.6+ is installed
- Download
ftp_deploy.pyto your desired location - Optional - Global Command Setup:
- Windows: Add the folder containing
ftp_deploy.batto your PATH environment variable - Linux/macOS: Create a symlink or add an alias (see Linux/macOS Setup)
- Windows: Add the folder containing
Initialize configuration in your project folder:
python ftp_deploy.py --initThis creates a .ftprules file. Edit it with your FTP settings:
[remote]
ftp.yourserver.com
[user]
yourusername
[password]
yourpassword
[remote-folder]
www/your-remote-folder
[origin]
dist
[ignore]
TEMP/
*.log
node_modules/# Normal deployment
python ftp_deploy.py
# Preview changes without uploading
python ftp_deploy.py --dry-run
# Force upload all files
python ftp_deploy.py --force
# Initialize configuration
python ftp_deploy.py --init
# Open script folder to edit templates
python ftp_deploy.py --open-config-folderBasic deployment:
python ftp_deploy.pyCheck what would be uploaded:
python ftp_deploy.py --dry-runTo use as a global command on Linux/macOS:
Option 1 - Symlink:
sudo ln -s /path/to/ftp_deploy.py /usr/local/bin/ftp_deploy
chmod +x /path/to/ftp_deploy.pyOption 2 - Alias (add to ~/.bashrc or ~/.zshrc):
alias ftp_deploy="python3 /path/to/ftp_deploy.py"Then use globally:
ftp_deploy --dry-run
ftp_deploy --init- Never commit
.ftprules- Add it to your.gitignore - Use strong passwords and consider SFTP/FTPS for production
- Limit FTP user permissions to only necessary directories
- Regular password rotation is recommended
.ftprules- Configuration file (add to .gitignore).ftp_cache.json- Upload cache (add to .gitignore).ftprules.example- Template file in script directory
This project is open source. Use at your own risk.
- Visão Geral
- Funcionalidades
- Instalação
- Configuração
- Uso
- Exemplos
- Considerações de Segurança
- Arquivos Gerados
- Licença
Ferramenta de deploy FTP automatizada que envia inteligentemente apenas arquivos modificados para seu servidor FTP. Usa cache local e hash de arquivos para minimizar tempo de upload e uso de banda.
- Upload Inteligente: Envia apenas arquivos modificados baseado em timestamps e hashes MD5
- Detecção de Renomeação: Detecta automaticamente arquivos renomeados e executa renomeação no servidor
- Padrões de Exclusão: Suporte para padrões de exclusão de arquivos e pastas
- Modo Dry Run: Visualiza o que seria enviado sem fazer alterações
- Gerenciamento de Cache: Mantém cache local para rastrear arquivos enviados
- Suporte a Diretórios Aninhados: Cria automaticamente estrutura de diretórios remotos
- Certifique-se que Python 3.6+ está instalado
- Baixe
ftp_deploy.pypara o local desejado - Opcional - Comando Global:
- Windows: Adicione a pasta contendo
ftp_deploy.batà variável de ambiente PATH - Linux/macOS: Crie um symlink ou adicione um alias (veja Configuração Linux/macOS)
- Windows: Adicione a pasta contendo
Inicialize a configuração na pasta do seu projeto:
python ftp_deploy.py --initIsso cria um arquivo .ftprules. Edite-o com suas configurações FTP:
[remote]
ftp.seuservidor.com.br
[user]
seuusuario
[password]
suasenha
[remote-folder]
www/sua-pasta-remota
[origin]
dist
[ignore]
TEMP/
*.log
node_modules/# Deploy normal
python ftp_deploy.py
# Visualizar mudanças sem enviar
python ftp_deploy.py --dry-run
# Forçar envio de todos os arquivos
python ftp_deploy.py --force
# Inicializar configuração
python ftp_deploy.py --init
# Abrir pasta do script para editar templates
python ftp_deploy.py --open-config-folderDeploy básico:
python ftp_deploy.pyVerificar o que seria enviado:
python ftp_deploy.py --dry-runPara usar como comando global no Linux/macOS:
Opção 1 - Symlink:
sudo ln -s /caminho/para/ftp_deploy.py /usr/local/bin/ftp_deploy
chmod +x /caminho/para/ftp_deploy.pyOpção 2 - Alias (adicione ao ~/.bashrc ou ~/.zshrc):
alias ftp_deploy="python3 /caminho/para/ftp_deploy.py"Então use globalmente:
ftp_deploy --dry-run
ftp_deploy --init- Nunca faça commit do
.ftprules- Adicione-o ao seu.gitignore - Use senhas fortes e considere SFTP/FTPS para produção
- Limite permissões do usuário FTP apenas aos diretórios necessários
- Rotação regular de senhas é recomendada
.ftprules- Arquivo de configuração (adicione ao .gitignore).ftp_cache.json- Cache de upload (adicione ao .gitignore).ftprules.example- Arquivo template no diretório do script
Este projeto é código aberto. Use por sua conta e risco.