"Sftp istemcisi" ile bir OpenSSH SFTP istemcisine başvurduğunuzu varsayıyorum. "Sorun" tuşuna bastığınızda Ctrl+C, yüklemeyi durdurur ve yükleme işlemi tamamen bitmiş gibi uzak dosyayı temiz bir şekilde kapatır (bunun doğru bir davranış olduğunu ve diğer birçok SFTP istemcisinin aynı şekilde davrandığını unutmayın). Bu nedenle sunucunun, yüklemenin kesintiye uğradığını söylemenin kesinlikle bir yolu yoktur.
Açıkça söylemek gerekirse, OpenSSH istemcisi dosyayı oluştururken sunucuya bir boyut ipucu gönderdiğinden. Ancak OpenSSH sunucusu bu bilgileri kullanmaz ve hatta günlüğe kaydetmez. Boyutu kaydetmek için kodunu değiştirmek oldukça basit olsa da, bu sizin için bir seçenekse.
Bkz process_open
in sftp-server.c
:
a = get_attrib();
flags = flags_from_portable(pflags);
mode = (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) ? a->perm : 0666;
logit("open \"%s\" flags %s mode 0%o",
name, string_from_portable(pflags), mode);
İfadeyi şu şekilde değiştirin logit
:
logit("open \"%s\" flags %s mode 0%o size %llu",
name, string_from_portable(pflags), mode, (unsigned long long)a->size);
Boyut ipucunun gönderilmesinin isteğe bağlı olduğunu unutmayın. Bazı SFTP istemcileri gönderirken (örn. OpenSSH veya WinSCP), bazıları göndermeyecektir (örn. PSFTP, FileZilla veya LFTP). Böyle bir durumda, 0 inç alacaksınız a->size
.
İstemci yüklemeyi gerçekten durdurmuş olsaydı (uzak dosyayı temiz bir şekilde kapatmadan, örneğin sftp
öldürüldüğünde), "zorunlu" önekten "kapat" kaydına söyleyebilirsin:
zorla kapat "/data/README.md" bayt okunmuş 0 yazılı 5366