linux服务器上如何批量删除文件 ?

linux服务器上如何批量删除文件 ?,第1张

Step1在云服务器配置FTP服务1在root权限下,通过如下命令安装Vsftp。[root@VM_250_202_tlinux~]#yuminstallvsftpd2在启动vsftpd服务之前,需要登录云服务器修改配置文件,将匿名登录禁用掉。打开配置文件,命令如下:[root@VM_250_202_tlinux~]#vim/etc/vsftpd/vsftpdconf在配置文件中第11行的“anonymous_enable=YES”前面加上#号,即将匿名登录禁用。3读取生效配置。[root@VM_250_202_tlinux~]#cat/etc/vsftpd/vsftpdconf|grep^[^#]local_enable=YESwrite_enable=YESlocal_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES4启动vsftpd服务。[root@VM_250_202_tlinux~]#servicevsftpdstart5设置FTP用户账号。设置成功后,即可通过该账号登录FTP服务器。(1)设置FTP用户的账号,例如账号为“ftpuser1”,目录为/home/ftpuser1,且设置不允许通过ssh登录。[root@VM_250_202_tlinux~]#useradd-m-d/home/ftpuser1-s/sbin/nologinftpuser1(2)设置账号对应的密码,例如密码为“ftpuser1”。[root@VM_250_202_tlinux~]#passwdftpuser16修改vsftpd的pam配置,使开发者可以通过自己设置的FTP用户帐号和密码连接到云服务器。(1)修改pam。[root@VM_250_202_tlinux~]#vim/etc/pamd/vsftpd内容修改为:#%PAM-10authrequired/lib64/security/pam_listfilesoitem=usersense=denyfile=/etc/ftpusersonerr=succeedauthrequired/lib64/security/pam_unixsoshadownullokauthrequired/lib64/security/pam_shellssoaccountrequired/lib64/security/pam_unixsosessionrequired/lib64/security/pam_unixso(2)确认修改后的文件是否正确。[root@VM_250_202_tlinux~]#cat/etc/pamd/vsftpd#%PAM-10authrequired/lib64/security/pam_listfilesoitem=usersense=denyfile=/etc/ftpusersonerr=succeedauthrequired/lib64/security/pam_unixsoshadownullokauthrequired/lib64/security/pam_shellssoaccountrequired/lib64/security/pam_unixsosessionrequired/lib64/security/pam_unixso(3)重启vsftpd服务,使修改生效。[root@VM_250_202_tlinux~]#servicevsftpdrestartShuttingdownvsftpd:[OK]Startingvsftpdforvsftpd:[OK]Step2上传文件到Linux云服务器1下载并安装开源软件FileZilla请使用FileZilla的351、352版本(使用353版本的FileZilla进行FTP上传会有问题)。由于FileZilla官网上只提供了最新的353版本下载,因此建议开发者自行搜索351、352下载地址。建议的351下载地址:/filezillaphpold_filezilla=63502连接FTP运行FileZilla,按下图所示进行配置,配置后点击“快速链接”:配置信息说明如下:(1)主机:云服务器的公网IP(在云服务器“管理视图”页面可查看云服务器的公网IP)。(2)用户名:在Step1中设置的FTP用户的账号,这里以“ftpuser1”为例。(3)密码:在Step1中设置的FTP用户账号对应的密码,这里以“ftpuser1”为例。(4)端口:FTP监听端口,默认为“21”。3上传文件到Linux云服务器上传文件时,鼠标选中本地文件,拖拽到远程站点,即将文件上传到了Linux云服务器。注意:云服务器FTP通道不支持上传tar压缩包后自动解压,以及删除tar包功能。

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上传文件夹、检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,

(1):Java FTP主文件代码:

package ftpDemo;

import javaioDataOutputStream;

import javaioInputStream;

import javaioOutputStream;

import sunnetTelnetInputStream;

import sunnetTelnetOutputStream;

import sunnetftpFtpClient;

public class ftpUtil {

// 上传文件至FTP通用方法

public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){

try {

String ftpHost = kmConfiggetFtpHost();

int port = kmConfiggetFtpPort();

String userName = kmConfiggetFtpUser();

String passWord = kmConfiggetFtpPassword();

String path = kmConfiggetFtpPath();

FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。

ftpClientlogin(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码

ftpClientbinary();

ftpClientcd(path);// path为FTP服务器上保存上传文件的路径。

TelnetOutputStream telnetOut = ftpClientput(fileName);// fileName为上传的文件名

DataOutputStream dataOut = new DataOutputStream(telnetOut);

byte buffer[] = new byte[ ];

int count = ;

while ((count = isread(buffer)) != -) {

dataOutwrite(buffer, , count);

}

telnetOutclose();

dataOutclose();

ftpClientcloseServer();

} catch (Exception e) {

Systemoutprintln("上传文件失败!请检查系统FTP设置,并确认FTP服务启动");

}

}

// 删除文件至FTP通用方法

public static void deleteFileFtp(KmConfig kmConfig,String fileName){

try {

String ftpHost = kmConfiggetFtpHost();

int port = kmConfiggetFtpPort();

String userName = kmConfiggetFtpUser();

String passWord = kmConfiggetFtpPassword();

String path = kmConfiggetFtpPath();

FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。

ftpClientlogin(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码

ftpClientbinary();

ftpClientcd(path);// path为FTP服务器上保存上传文件的路径。

try {

ftpClientsendServer("dele " + fileName + "\r\n");

} catch (Exception e) {

Systemoutprintln("删除文件失败!请检查系统FTP设置,并确认FTP服务启动");

}

ftpClientcloseServer();

} catch (Exception e) {

Systemoutprintln("删除文件失败!");

}

}

// 下载ftp文件

public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){

try {

String ftpHost = kmConfiggetFtpHost();

int port = kmConfiggetFtpPort();

String userName = kmConfiggetFtpUser();

String passWord = kmConfiggetFtpPassword();

String path = kmConfiggetFtpPath();

FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。

ftpClientlogin(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码

ftpClientbinary();

ftpClientcd(path);// path为FTP服务器上保存上传文件的路径。

try {

TelnetInputStream in = ftpClientget(fileName);

byte[] bytes = new byte[];

int cnt=;

while ((cnt=inread(bytes,,byteslength)) != -) {

outputStreamwrite(bytes, , cnt);

}

outputStreamclose();

inclose();

} catch (Exception e) {

ftpClientcloseServer();

eprintStackTrace();

}

ftpClientcloseServer();

} catch (Exception e) {

Systemoutprintln("下载文件失败!请检查系统FTP设置,并确认FTP服务启动");

}

}

//在ftp服务器上传件文件夹

public boolean createDir(String path,FtpClient ftpClient) throws Exception{

//进入到home文件夹下

ftpClientcd("/home");

//创建远程文件夹

//远程命令包括

//USER  PORT  RETR  ALLO  DELE  SITE  XMKD  CDUP  FEAT<br>

//     PASS  PASV  STOR  REST  CWD   STAT  RMD   XCUP  OPTS<br>

//     ACCT  TYPE  APPE  RNFR  XCWD  HELP  XRMD  STOU  AUTH<br>

//     REIN  STRU  SMNT  RNTO  LIST  NOOP  PWD   SIZE  PBSZ<br>

//     QUIT  MODE  SYST  ABOR  NLST  MKD   XPWD  MDTM  PROT<br>

//        在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br>

//          ftpclientsendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br>

//          ftpclientreadServerResponse一定要在sendServer后调用<br>

//          nameList("/test")获取指目录下的文件列表<br>

//          XMKD建立目录,当目录存在的情况下再次创建目录时报错<br>

//          XRMD删除目录<br>

//          DELE删除文件<br>

//通过远程命令 穿件一个files文件夹

ftpClientsendServer("MKD "+ path + "\r\n");

//这个方法必须在 这两个方法中间调用 否则 命令不管用

ftpClientbinary();

ftpClientreadServerResponse();

return false;

}

/

检查文件夹是否存在

@param dir

@param ftpClient

@return

/

public boolean isDirExist(String dir, FtpClient ftpClient) {

try {

ftpClientcd(dir);

} catch (Exception e) {

return false;

}

return true;

}

}

(2):KmConfigjava代码如下:定义FTP服务器参数,包括登录的用户名密码之类的。

package ftpDemo;

public class KmConfig {

//主机ip

private String FtpHost = "";

//端口号

private int FtpPort;

//ftp用户名

private String FtpUser = "";

//ftp密码

private String FtpPassword = "";

//ftp中的目录

private String FtpPath = "";

public String getFtpHost() {

return FtpHost;

}

public void setFtpHost(String ftpHost) {

FtpHost = ftpHost;

}

public int getFtpPort() {

return FtpPort;

}

public void setFtpPort(int ftpPort) {

FtpPort = ftpPort;

}

public String getFtpUser() {

return FtpUser;

}

public void setFtpUser(String ftpUser) {

FtpUser = ftpUser;

}

public String getFtpPassword() {

return FtpPassword;

}

public void setFtpPassword(String ftpPassword) {

FtpPassword = ftpPassword;

}

public String getFtpPath() {

return FtpPath;

}

public void setFtpPath(String ftpPath) {

FtpPath = ftpPath;

}

}

(3):下面是测试代码:

不太苟同楼上的做法,这种不光耗费服务器资源,也耗费数据库的资源。如果是类似腾讯这种人气的网站。就知道问题了。
说下我在实际中的做法吧。当然我的客户人气没有那么高。每年顶多几万人。
比如有个图像上传预览。也是要及时预览并上传到服务器端。我用的是uploady上传插件。
第一张上传后以用户名命名JPG保存。第二次上传就判断当前用户的photo这是上传保存在数据库中是否存在,如果存在就以用户名#TEMP#JPG如果当前用户的photo已是#TEMP#JPG结尾则以用户名JPG保存。如果不存在就依然以用户名JPG保存。如此互斥。这样只要你不覆盖用户点击保存前你的那张,数据库也不会有变动。预览的也就永远只有一张。如果你要清理这1万张预览图那也是相当容易的比如你可以将预览图放在一个临时文件夹中,做个定时任务,一个星期清理一次也差不多了,顶多也就上万张,平时估计几百张就不错了,而实际用户的也是以年份/省市/等单独存放,避免一个文件夹过大。本人项目中的用法,如有问题,请赐教。

除非你发送的是离线文件,要不然服务器上是没有保存你的文件的,你删除了消息,删不到文件,是因为文件还保存在手机的缓存资料夹,你可以到内存卡, Tencent这个资料夹, 再进MobileQQ这个资料夹,把写著你QQ号的那个资料夹删除就行了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12859598.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存