Thông báo lỗi 'scp not a regular file' cho thấy bạn đang cố gắng dùng lệnh SCP để copy file, nhưng nguồn hoặc đích được chỉ định không phải là file thông thường. Lệnh SCP được dùng rộng rãi để truyền file an toàn giữa các host qua kết nối SSH (Secure Shell). Nó yêu cầu chỉ định cả nguồn và đích cho việc truyền file. Do đó, lỗi thường xảy ra do đường dẫn file không đúng.
Thông báo lỗi "scp not a regular file" có thể xảy ra trên nhiều hệ điều hành, bao gồm các hệ Unix-like như 'Linux', 'macOS', và 'BSD'. Nó cũng có thể xảy ra trên các hệ thống Windows có cài lệnh SCP, thường như một phần của phần mềm thứ ba như 'PuTTY' hoặc 'Cygwin'.
Để hỗ trợ bạn giải quyết lỗi này, chúng tôi đã tổng hợp một hướng dẫn xử lý sự cố chi tiết giúp bạn giải quyết vấn đề này.
1. Vấn Đề Cú Pháp (Syntax Issues)
Unix và Linux nổi tiếng với việc tuân thủ nghiêm ngặt các quy tắc và tiêu chuẩn cú pháp được định nghĩa rõ ràng cho các lệnh, shell scripting, và file cấu hình. Việc tuân theo cú pháp quy định là rất quan trọng để đảm bảo thực thi đúng và hành vi như mong đợi trong các hệ điều hành này.
Vì vậy, nếu phát hiện khiếm khuyết trong cú pháp, hệ thống sẽ tự động nhắc người dùng bằng một lỗi; trong trường hợp này là lỗi "scp: not a regular file." Có một số lưu ý cần nhớ khi cố gắng copy một file.
1.1 Kiểm Tra Khoảng Trắng (Check Spaces)
Kiểm tra khoảng trắng trong tên file hoặc thư mục là một nhiệm vụ quan trọng trong Unix/Linux. Nó đảm bảo không có khoảng trắng ở đầu hoặc cuối có thể gây ra vấn đề khi làm việc với các lệnh hoặc script.
Ví dụ, hãy xem xét trường hợp bạn có file tên 'my_file.txt' nằm trong thư mục '/home/user'. Để kiểm tra sự hiện diện của khoảng trắng trong tên file, bạn có thể dùng lệnh sau:
ls -Q /home/user
Tùy chọn -Q được dùng để hiển thị tên file và thư mục trong ngoặc kép. Nếu có khoảng trắng nào trong tên file, chúng sẽ hiện rõ ràng trong ngoặc kép khi chạy lệnh này.
Ví dụ, nếu kết quả hiển thị như sau, chúng ta cần thực hiện hành động cần thiết:
"my file.txt"
Điều này cho thấy có khoảng trắng trong tên file. Trong các trường hợp như vậy, khuyến nghị xử lý khoảng trắng trong tên file bằng cách dùng ký tự đặc biệt hoặc đặt tên trong ngoặc kép khi làm việc với lệnh hoặc script.
Để tránh các vấn đề tiềm ẩn liên quan đến khoảng trắng trong tên file hoặc thư mục, thường khuyến khích dùng tên file không chứa khoảng trắng.
1.2 Thiếu Hoặc Dư Dấu Hai Chấm (Missing or Extra Colon)
Lệnh SCP yêu cầu dùng dấu hai chấm để chỉ định server từ xa và đường dẫn file. Ví dụ, dùng cú pháp sai như 'scp user@host filepath' thay vì 'scp user@host:filepath' có thể gây lỗi. Vì vậy, để tránh lỗi "scp not a regular file," hãy chắc chắn rằng bạn tuân thủ các giới hạn cú pháp.
1.3 Nhầm Lẫn Nguồn và Đích (Mixing Up Source and Destination)
Khi dùng lệnh SCP, nhầm lẫn đường dẫn nguồn và đích có thể gây lỗi hoặc hành vi không mong muốn. Việc giữ đúng thứ tự rất quan trọng để đảm bảo truyền file thành công.
Để rõ ràng, lệnh SCP tuân theo cú pháp:
scp <source> <destination>.
Nếu bạn nhầm lẫn đường dẫn nguồn và đích, nó có thể dẫn đến file bị copy sai hướng hoặc kích hoạt lỗi "scp not a regular file" nếu đích không hợp lệ.
Ví dụ, hãy xem xét việc copy file tên "file.txt" từ máy local lên server từ xa:
Đúng: scp file.txt user@remote:/path/to/destination
Sai: scp user@remote:/path/to/destination file.txt
Cách dùng sai sẽ cố gắng copy file từ xa tên "file.txt" về máy local, dẫn đến kết quả không mong muốn hoặc lỗi. Để đảm bảo truyền file suôn sẻ, luôn kiểm tra kỹ và giữ đúng thứ tự đường dẫn nguồn và đích khi dùng lệnh SCP.
2. Dùng Tùy Chọn "-r"
Lý do bạn gặp lỗi này có thể là bạn đang copy một thư mục mà không chỉ định cho hệ điều hành biết rằng bạn đang copy một thư mục.
Mặc định SCP xử lý file như file thông thường, nên tùy chọn -r phải được thêm khi copy thư mục. Lỗi "scp not a regular" xảy ra khi người dùng cố copy thư mục mà không chỉ định hành động này bằng tùy chọn -r.
Khi bạn muốn copy toàn bộ một thư mục, cùng với tất cả thư mục con và file bên trong, bạn dùng tùy chọn "-r". Không có tùy chọn "-r", SCP chỉ copy từng file riêng lẻ, không copy thư mục.
Ví dụ dùng scp với tùy chọn "-r":
scp -r /path/to/source_directory user@remote:/path/to/destination_directory
Lệnh này sẽ copy đệ quy nội dung của "source_directory" và tất cả thư mục con của nó sang "destination_directory" trên server từ xa.
VỀ TÁC GIẢ

Dawood Janjua
Dawood Janjua là người đam mê công nghệ có kỹ năng cao với kho kiến thức dồi dào về xử lý sự cố Windows và game. Anh持有 chứng chỉ CCNA và có hồ sơ cung cấp hỗ trợ xuất sắc cho khách hàng. Hiện đang làm tác giả, Dawood khát vọng đạt chứng chỉ CCIE danh giá trong tương lai để mở rộng chuyên môn kỹ thuật và cung cấp hỗ trợ cấp khu vực. Với đam mê game và chuyên môn công nghệ, Dawood cam kết chia sẻ kiến thức với cộng đồng để giúp người khác cải thiện kỹ năng và kiến thức trong lĩnh vực này.