Tại sao sftp rmdir không hoạt động?


18

Tôi đang cố xóa một thư mục có nhiều tệp và thư mục khỏi không gian máy chủ riêng của tôi. Tôi đang đăng nhập qua SFTP tốt; Tôi có thể truy cập toàn bộ thư mục không có vấn đề; Tôi thậm chí có thể xóa các tập tin cá nhân với rm. Nhưng điều này sẽ đưa tôi mãi mãi - vì vậy tôi thực sự muốn làm rmdir trên thư mục cao nhất mà tôi muốn xóa. Nhưng khi tôi làm điều này, tôi nhận được

Không thể xóa thư mục: Thất bại

Bất kỳ suy nghĩ về những gì tôi có thể làm sai?

Cảm ơn rất nhiều, Sam


Nếu bạn có thể SFTP vào máy chủ đó, bạn có thể SSH không? Nếu vậy, bạn có thể sử dụng phiên bản mạnh mẽ hơn của lệnh RM: rm -rf foo / *
Chris

Câu trả lời:


21

Theo kinh nghiệm của tôi, rmdir thích làm việc trên một thư mục trống. Nếu bạn đang cố xóa thư mục foo, tôi sẽ làm:

$rm foo/*
$rmdir foo

2
Đã chỉnh sửa vì cờ -rf không tồn tại cho rm trong sftp.
Chris

1
SSH đang làm rm -rf là ​​câu trả lời rõ ràng. Tôi đã thử rm -rf trên SFTP nhưng không thể chấp nhận -rf, như bạn đã chỉ ra. (Thủ thuật ký tự đại diện trong SFTP cũng không hoạt động.) Dù sao, cảm ơn rất nhiều vì sự giúp đỡ của bạn!
dùng1451632

Điều đó thật buồn cười. rm foo / * làm việc cho tôi trong SFTP. Dù sao, tôi rất vui vì bạn đã giải quyết nó!
Chris

Tuy nhiên, nó không loại bỏ các thư mục đệ quy. Nó đã đủ tốt rồi, nhưng chưa hoàn hảo :-)
Krzysztof Jabłoński

Có cùng một vấn đề và rm foo/*không hoạt động vì foo/chứa các thư mục không trống. May mắn thay rsynccũng được cho phép và tôi đã tạo một thư mục trống cục bộ và sau đó được sử dụng rsync -rv --delete empty_local_dir/ host.example.org:/foo/để xóa mọi thứ bên dưới foo/thư mục từ xa . Sau đó có thể rmdir foothông qua SFTP.
ckujau

5

Bạn chưa chỉ định, ứng dụng khách SFTP nào bạn đang sử dụng. Vì vậy, tôi giả sử OpenSSH SFTP ( sftp).

Lệnh rmdirtrong OpenSSH SFTP client ánh xạ trực tiếp tới SSH_FXP_RMDIRyêu cầu giao thức SFTP. Thông số SFTP cho phiên bản 3 (phiên bản được sử dụng bởi OpenSSH) đề cập rằng SSH_FXP_RMDIRhoạt động có thể thất bại, "nếu thư mục được chỉ định không trống" (mặc dù dường như không bắt buộc).

Nếu thư mục không có thư mục con, bạn có thể sử dụng rm foo/*(có nghĩa là lệnh OpenSSH SFTP, không phải lệnh shell) để xóa tất cả các tệp trong thư mục trước. Và sau đó sử dụng rmdir.


1
Một câu hỏi kinh điển là: Làm thế nào để bạn làm rm -r *với SFTP. Tôi không nghĩ rằng nó có thể.
Jari Turkia

2
@JariTurkia Không thể với sftp(máy khách dòng lệnh OpenSSH). Có thể với SFTP (giao thức), nếu bạn có máy khách đủ thông minh.
Martin Prikryl

Tôi sẽ đánh giá cao bất kỳ đề xuất nào cho một khách hàng SFTP đủ thông minh. Có một hộp đặc biệt, mà tôi cần phải sửa lại thường xuyên và bị hạn chế đối với SFTP vì lý do bảo mật. Rõ ràng, khi làm bất cứ điều gì nó sẽ rất đau đớn, với bộ lệnh giới hạn mà SFTP-client cung cấp.
Jari Turkia

Đặt câu hỏi về vấn đề cụ thể của bạn ( "Cách xóa đệ quy thư mục bằng SFTP" ) - Đảm bảo bạn chỉ định nền tảng của mình.
Martin Prikryl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.