Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern crate ftp;
- extern crate chrono;
- use std::env;
- use std::fs::File;
- use std::str;
- use std::io::{Result, Write};
- use ftp::FtpStream;
- use chrono::*;
- fn main() {
- let args: Vec<String> = env::args().collect();
- ftpgp(&args[1], &args[2], &args[3], &args[4]).unwrap_or_else(|err|
- panic!("{}", err)
- );
- }
- fn ftpgp(addr: &str, user: &str, pass: &str, remote_path: &str,) -> Result<()> {
- let dt = Local::now();
- let now = dt.format("%Y-%m-%d %H:%M:%S").to_string();
- let mut ftp_stream = try!(FtpStream::connect((addr, 21)));
- try!(ftp_stream.login(user, pass));
- ftp_stream.cwd(remote_path).unwrap();
- let file_list = try!(ftp_stream.nlst(None));
- let files: Vec<String> = file_list.into_iter()
- .filter(|name| name.ends_with(".zip"))
- .collect();
- for file in files {
- try!(ftp_stream.retr(file.as_str(), |stream| {
- let mut file = File::create(file.clone()).unwrap();
- let mut buf = [0; 2048];
- loop {
- match stream.read(&mut buf) {
- Ok(0) => break,
- Ok(n) => file.write_all(&buf[0..n]).unwrap(),
- Err(err) => return Err(err)
- };
- }
- Ok(())
- }));
- println!("{} Saving: {}", now, file);
- ftp_stream.rm(file.as_str()).unwrap();
- println!("{} Delete from ftp: {}", now, file);
- }
- ftp_stream.quit()
- }
- ftp_stream.transfer_type(Binary);
- error: unresolved name `Binary`
- extern crate ftp;
- use ftp::FtpStream;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement