diff --git a/docs/content/docs.md b/docs/content/docs.md
index 07e80d89b..355053470 100644
--- a/docs/content/docs.md
+++ b/docs/content/docs.md
@@ -284,6 +284,34 @@ Enter an interactive configuration session.
 
 Prints help on rclone commands and options.
 
+Copying single files
+--------------------
+
+rclone normally syncs or copies directories.  However if the source
+remote points to a file, rclone will just copy that file.  The
+destination remote must point to a directory - rclone will give the
+error `Failed to create file system for "remote:file": is a file not a
+directory` if it isn't.
+
+For example, suppose you have a remote with a file in called
+`test.jpg`, then you could copy just that file like this
+
+    rclone copy remote:test.jpg /tmp/download
+
+The file `test.jpg` will be placed inside `/tmp/download`.
+
+This is equivalent to specifying
+
+    rclone copy --no-traverse --files-from /tmp/files remote: /tmp/download
+
+Where `/tmp/files` contains the single line
+
+    test.jpg
+
+It is recommended to use `copy` when copying single files not `sync`.
+They have pretty much the same effect but `copy` will use a lot less
+memory.
+
 Quoting and the shell
 ---------------------
 
diff --git a/rclone.go b/rclone.go
index 5686117a1..bd261f48a 100644
--- a/rclone.go
+++ b/rclone.go
@@ -384,6 +384,8 @@ func NewFsSrc(remote string) fs.Fs {
 		}
 		// Limit transfers to this file
 		err = fs.Config.Filter.AddFile(path.Base(fsPath))
+		// Set --no-traverse as only one file
+		fs.Config.NoTraverse = true
 	}
 	if err != nil {
 		fs.Stats.Error()