[Résolu] Problème transfert vsftpd

Hello à tous,

Après avoir pas mal galéré à faire fonctionner vsftpd avec les divers tuto du net (beaucoup tape sur des versions obsolètes …), je me retrouve coincé :’(.
J’ai 2To de données à faire passer par FTP (transfert de mon pc au serveur).
J’ai l’impression qu’à un moment il semble saturer et bloquer tous les transfert. J’ai pas vraiment de solution après avoir essayer plusieurs configuration possible coté serveur et filezilla…
Je précise que je passe par des users virtuels mais ça n’a aucun impact et que ce n’est pas des problèmes droits.
D’ailleurs même en tentant de reboot mon serveur j’ai un message m’indiquant que y’a un stop job en cours pour vsftpd comme ci il pomper des ressources à fond.
J’ai regardé avec top mais mon système semble ok niveau performance.

Voila ma CFG vsftpd :

# Mode "standalone"
listen=YES

# Je ne veux pas de connexion anonyme
anonymous_enable=NO

# On autorise les connexions des utilisateurs locaux. C'est indispensable
# pour que les utilisateurs virtuels (mappes sur un utilisateur local)
# puissent se connecter (les "vrais" utilisateurs locaux sont ensuite desactives
# avec le fichier user_list
local_enable=YES

# Fichier de users
userlist_file=/etc/vsftpd/user_list
# Chargement de la liste userlist_file
userlist_enable=NO
# On refuse les utilisateurs de la liste
userlist_deny=NO

# trop restrictif, un utilisateur virtuel pourra ainsi telecharger un fichier meme s'il n'est pas world readable
anon_world_readable_only=NO

# Refus des commandes influant sur le systeme de fichier (STOR, DELE, RNFR, RNTO, MKD, RMD, APPE and SITE)
write_enable=NO

# Refus des droits d'ecriture pour les anonymes (et donc utilisateurs virtuels) par défaut
# les autorisations seront données au cas par cas :
# pas d'upload
anon_upload_enable=NO
# pas de creation de repertoire
anon_mkdir_write_enable=NO
# pas de creation, suppression, renommage de repertoire ...
anon_other_write_enable=NO

# On fait en sorte que les utilisateurs "guest" (non-anonymes) soient mappés sur le compte local "ftp"
guest_enable=YES
guest_username=ftp

# chroot des utilisateurs
chroot_local_user=YES

# Nombre maximum de connexion simultanees
max_clients=0

# Nombre maximum de connexion venant de la meme IP
max_per_ip=0

# Dossier de configuration specifique des utilisateurs
user_config_dir=/etc/vsftpd/vsftpd_user_conf

# On active le log
xferlog_enable=YES
xferlog_std_format=YES

# Bypass chroot
allow_writeable_chroot=YES

# Desactivation du CHMOD
chmod_enable=NO

# Autorise le telechargement
download_enable=YES

# Protection des users et groups en ftp
hide_ids=YES

# Log ftp
log_ftp_protocol=YES

# Timeout
data_connection_timeout=86400
idle_session_timeout=86400

# Autorise les ASCII
ascii_download_enable=YES
ascii_upload_enable=YES

Et ici voici ce qui arrive sur mon filezilla :

Ca ne bouge plus du tout depuis plusieurs minutes. J’ai réussi 256 fichiers puis après ça bloque. J’ai du tout envie de faire partie par partie et surtout si ça arrive à chaque fois ça va vraiment devenir embêtant …

Merci pour votre aide !

Hello,

Ton problème me fait penser à des déconnexions internet, mais il est possible que ce ne soit pas ça. Voici ma conf de vsftpd si ça peut aider :

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
pasv_min_port=64000
pasv_max_port=65535
chroot_local_user=YES
allow_writeable_chroot=YES

Pour créer le répertoire de chroot et l’utilisateur “ftpuser”

mkdir /var/ftproot

echo "MyPasswd123!
MyPasswd123!
Y" > /tmp/ftpuser

adduser --home /var/ftproot/ftpuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" ftpuser < /tmp/ftpuser

rm /tmp/ftpuser

chown -R ftpuser:ftpuser /var/ftproot/ftpuser

/etc/init.d/vsftpd restart

Personnellement pour le transfert de gros fichiers je privilégierais plutôt rsync overssh, la reprise après coupure internet a l’air plus fiable…

Pour Rsync tu peux essayer quelque chose comme ça (modifier les variables !!!) :

## Les paquets
apt-get update && apt-get install -y rsync openssh-server

## Le script à appeler par la crontab
mkdir /root/scripts	
cat > /root/scripts/RsyncTask << EOF
## définir ici l'@IP du SRV FTP de destination
IP_dest=@ip_de_destination

## définir ici le répertoire à dupliquer (le même sur la source et la destination)
SyncFolder=Chemin_Absolu_vers_le_répertoire_à_dupliquer 

## On vérifie si rsync est en cours d'exécution
		ps auxwww | grep rsync|grep pts|grep avz|grep -v grep
		if [[ \$? -eq 0 || \$? -eq 24 || \$? -eq 23 || \$? -eq 11 ]]
			then
				exit 0
			else	
				rsync -avz --exclude '*.tmp' --del --partial --append-verify -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress ${SyncFolder} rsynccli@${IPdest}:${SyncFolder} 2>> /var/log/RsyncOverSSH
						if [ \$? = 0 ]
							then
								echo "Le service RsyncOverSSH a terminé sa tâche le \$(date)" >> /var/log/RsyncOverSSH
							else
								echo "Le service RsyncOverSSH n'a pas terminé sa tâche correctement le \$(date)" >> /var/log/RsyncOverSSH
								echo "Le service RsyncOverSSH n'a pas terminé sa tâche correctement le \$(date) sur la machine \$(hostname).\$(hostname -d)" | mail -s "SwapNSafe mail d'alerte" remiesque@gmail.com
						fi
		fi		
EOF

## on génère la clé ssh
ssh-keygen -f ~/.ssh/id_rsa -q -P "" -b 4096

## on la copie sur le SRV FTP
utilisateur_distant=Utilisateur_Unix_distant_sur_SRV_FTP
hote_distant=@ip_SRV_FTP_ou_FQDN
ssh-copy-id -i ~/.ssh/id_rsa.pub ${utilisateur_distant}@${hote_distant}

## Paramétrage du serveur Rsync
		sed -i "s/RSYNC_ENABLE=false/RSYNC_ENABLE=true/" /etc/default/rsync
		cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/rsync.d
		sed -i "s|#log file=/var/log/rsyncd|log file=/var/log/rsyncd|" /etc/rsync.d
		touch /var/log/rsyncd
		/etc/init.d/rsync start

## on appelle le script pour initier le transfert par la crontab toutes les 5 min
echo "*/5 * * * * root bash /root/scripts/RsyncTask" >> /etc/crontab
echo "#" >> /etc/crontab

J’allais oublier, il faut établir une première connexion en ssh (depuis le client vers le SRV) pour enregistrer le fingerprint du SRV distant (FTP).
En tout cas si tu t’en sors j’espère que tu as la fibre car 2 TO ça va prendre la vie des rats en ADSL !

Bon courage

Si jamais tu souhaites préserver ta connexion quand tu t’en sers tu peux utiliser wondershapper par exmple :

wondershaper eth0 8192000 512

==> connexion bridée à 1 Go/s en réception et 64 Ko/s en upload
la syntaxe correspond à ça :
wondershaper Interface limite_en_DL limite en UL ## l’uité est le kilobit

Pour supprimer les limites sur l’interface :

wondershaper remove eth0

pour convertir en kilooctet : http://www.translatorscafe.com/cafe/FR/units-converter/data-storage/9-10/kilobit-kilo-octet/

Merci pour ton retour.
Effectivement j’ai une très bonne connexion (1gbps en dl et 500mbps en up).
Néanmoins là je suis sur un serveur maison donc je passe pas par internet mais uniquement sur le réseau local.
Et à priori après test j’ai pas ce problème en transfert sftp mais c’est pas l’idéal à mon gout.
Je vais essayer d’utiliser ta conf vsftpd voir si ça change quelque chose.

Ces deux lignes semblent avoir résolues mon problème car j’ai pu transférer 500Go sans problème :slight_smile:
pasv_min_port=64000
pasv_max_port=65535