Tôi cần phải sao chép tệp văn bản từ máy chủ này sang máy chủ khác (cả hai máy chủ là Linux). Làm cách nào để làm điều đó trong Java?Sao chép tệp từ một máy chủ sang một máy chủ khác
Trả lời
easist nếu bạn có thể sử dụng apache commons-io: lớp FileUtils
có phương pháp thuận tiện để sao chép các tập tin:
FileUtils.copyFileToDirectory(srcFile, targetDirectory);
(như bạn nói về văn bản file tôi giả sử, ứng dụng của bạn có quyền truy cập vào cả hai tập tin hệ thống)
Yêu cầu máy chủ A có thư mục máy chủ B được gắn cục bộ không? – aioobe
Đoán như vậy. Câu hỏi có phần mơ hồ - thường bạn có một giao diện nhất định (hệ thống tệp, ftp, webservice, ...) và tìm kiếm trợ giúp để triển khai/sử dụng nó với ngôn ngữ lập trình nhất định (ở đây: Java) ... –
Câu trả lời hay (+1) –
Nếu bạn cần sao chép tệp từ hệ thống tệp có thể truy cập, hãy truy cập Andreas' answer.
Nếu bạn muốn có cách tiếp cận chung tóm tắt từ giao thức bên dưới, hãy xem Apache Commons VFS. Nó cung cấp một api phổ biến đối với các nguồn lực có sẵn thông qua a number of protocols:
- FTP
- tập tin địa phương
- HTTP và HTTPS
- SFTP
- Temporary Files
- Zip, Jar và Tar (không nén, tgz hoặc tbz2)
- gzip và bzip2
- res
- ram
- kịch câm
Hầu như tất cả các máy Linux sẽ có máy chủ SSH chạy theo mặc định. Vì vậy, SCP sẽ là đặt cược tốt nhất của bạn để sao chép các tập tin giữa chúng.
Sử dụng thư viện SSH như JSCH để thực hiện việc này. Bạn sẽ tìm thấy một hướng dẫn để thực hiện chuyển SCP bằng cách sử dụng JSCH here.
Nếu bạn sử dụng FTP, bạn có thể sử dụng FTPClient từ giao thức Apache/net.
Dưới đây là một số mã mẫu để bạn tham khảo:
FTPClient client = new FTPClient();
client.connect(host);
if(FTPReply.isPositiveCompletion(client.getReplyCode())) {
if(client.login(username, password)) {
FileInputStream fis = new FileInputStream(localFilepath);
try {
if(client.storeFile(remoteFilename, fis)) {
System.out.println("File uploaded!");
}
}
finally {
fis.close();
}
}
}
Nếu bạn muốn một cách dễ dàng và máy chủ của bạn hỗ trợ PHP, tôi khuyên bạn nên Rapid Transfer Script.
Chỉ cần tải tập lệnh lên thư mục bạn muốn sao chép tệp, nhập URL của tệp bạn muốn sao chép và nhấp vào Chuyển. Nó sao chép một tập tin 1.4GB trên dưới 2 phút và lưu lại cho tôi rất nhiều thời gian và băng thông.
Tôi đã sử dụng mạng lưới commons net FTP để chuyển tệp từ máy chủ này sang máy chủ khác.
Maven phụ thuộc:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
public void tranferFile() {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(servername, port);
ftpClient.login(username, password);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
File sourceFile = new File("file which you want to send");
InputStream inputStream = new FileInputStream(sourceFile);
boolean done = ftpClient.storeFile("filename which receiver get", inputStream);
inputStream.close();
if (done) {
LOGGER.info("file is uploaded successfully..............");
}
} catch (IOException e) {
LOGGER.error("Exception occured while ftp : "+e);
} finally {
try {
if (ftpClient.isConnected()) {
ftpClient.logout();
ftpClient.disconnect();
}
} catch (IOException e) {
LOGGER.error("Exception occured while ftp logout/disconnect : "+e);
}
}
}
- 1. Làm cách nào để sao chép tệp từ máy chủ này sang máy chủ khác?
- 2. Làm cách nào để sao chép các tạo tác từ Teamcity sang một máy chủ khác?
- 3. Cách sao chép/sao chép một môi trường ảo từ máy chủ đến máy cục bộ
- 4. Cách sao chép cơ sở dữ liệu máy chủ sql từ máy chủ này sang máy chủ khác mà không có bất kỳ bản sao lưu nào
- 5. TFS: Di chuyển một dự án nhóm từ máy chủ này sang máy chủ khác?
- 6. Di chuyển RavenDb sang một máy chủ khác
- 7. Chuyển từ Google AppEngine sang một máy chủ khác
- 8. Sao chép cơ sở dữ liệu PostgreSQL sang một máy chủ khác
- 9. Làm cách nào để sao chép tệp từ VirtualBox sang hệ điều hành máy chủ?
- 10. Làm thế nào để sao chép/sao chép một môi trường ảo từ máy chủ web
- 11. SQL Server 2005, cách sao chép Sơ đồ cơ sở dữ liệu sang máy chủ khác
- 12. Sao chép máy chủ SQL không sao chép khóa ngoài
- 13. Chèn dữ liệu từ máy chủ này sang máy chủ khác?
- 14. Làm cách nào để sử dụng scp để sao chép tệp từ máy chủ sang phía máy khách?
- 15. TFS: Di chuyển từ máy chủ này sang máy chủ khác
- 16. Máy chủ SQL - sao chép dữ liệu từ bảng dàn
- 17. Chuyển MongoDB sang máy chủ khác?
- 18. Cách tốt nhất để di chuyển tệp từ máy chủ này sang máy chủ khác với PHP là gì?
- 19. Sao chép tệp từ HDFS sang Máy cục bộ
- 20. Sao chép bảng vào một cơ sở dữ liệu khác nhau trên một Máy chủ SQL khác nhau
- 21. Sao chép cơ sở dữ liệu mysql từ máy chủ từ xa sang máy tính cục bộ
- 22. cái nào là tốt hơn wget hoặc scp để sao chép các tập tin từ máy chủ này sang máy chủ khác?
- 23. Di chuyển một dự án sang một máy chủ nhóm khác nhau
- 24. lệnh bash để sao chép tập tin từ máy này sang máy khác
- 25. viết một máy chủ FTP ftp
- 26. Chiến lược sao lưu với máy chủ chủ độc lập 3.6 Máy chủ
- 27. Máy chủ SQL: Sao chép cột trong bảng
- 28. Sao chép cơ sở dữ liệu SQL Server Express sang một máy tính khác
- 29. Sao chép khóa và chứng chỉ sang một máy Mac khác để phát triển iPhone
- 30. PHP Exec SCP không sao chép tệp vào máy chủ từ xa
loại máy chủ? , có thể máy chủ B truy cập máy chủ của A tập tin bằng cách sử dụng HTTP? –
Bạn có thể sử dụng FTP không?Các máy chủ của bạn có cùng mạng không? Bạn có đang sử dụng Hệ thống tệp được chia sẻ không? Bạn có thể triển khai Servlet không? Tôi nghĩ chúng ta cần thêm nền tảng để trả lời. –
Bạn * có thể * sử dụng [scp] (http://www.go2linux.org/scp-linux-command-line-copy-files-over-ssh), nhưng tôi đoán bạn đã tự mình thực hiện nó, phải không? – Patrick