动机:owncloud-client
由于多种原因而定期失败;我需要scp
在这些事件中。在服务器中ls -la
,$HOME
drwxr-xr-x 2 masi masi 4096 May 31 14:14 .
drwxr-xr-x 4 root root 4096 May 31 10:18 ..
-rw------- 1 masi masi 1099 May 31 12:20 .bash_history
-rw-r--r-- 1 masi masi 220 May 31 10:18 .bash_logout
-rw-r--r-- 1 masi masi 3512 May 31 10:18 .bashrc
-rw-r--r-- 1 masi masi 675 May 31 10:18 .profile
-rw------- 1 masi masi 2632 May 31 14:14 .viminfo
我可以
由于某种原因我不能
scp $HOME/5GBdata/ [email protected]:$HOME/
SCP 文件在哪里?
服务器:Raspberry Pi 3b。客户端:Ubuntu 16.04。
回顾 Ankit 的答案
客户端
masi@masi:~/Documents/Masi$ rsync -avz Directory -e ssh [email protected]:/home/masi/
sending incremental file list
Directory/
Directory/common_mistakes.tex
sent 484 bytes received 58 bytes 63.76 bytes/sec
total size is 4,143 speedup is 7.64
服务器端
masi@raspberrypi:~ $ ls Directory/
common_mistakes.tex
masi@raspberrypi:~ $ sudo cp -r /home/masi/Directory /var/www/owncloud/data/masi/files/
masi@raspberrypi:~ $ sudo -u www-data php /var/www/owncloud/occ files:scan masi
Scanning file /masi/
Scanning folder /masi/
...
Scanning file /masi/files/Directory
...
Scanning folder /masi/files/Directory
Scanning file /masi/files/Hematology/._common_mistakes.tex
Scanning file /masi/files/Hematology/common_mistakes.tex
...
Scanning folder /masi/cache
其中你必须有一个完整的路径occ
。它起作用了!
答案1
先决条件:
- Owncloud 服务器上的数据目录
:通过 ssh 连接到服务器。如果您已将 owncloud 服务器安装到默认位置(
/var/www
),则转到配置文件以查找数据目录位置。
nano /var/www/owncloud/config/config.php
此文件将告诉您数据目录的位置(存储所有文件的地方)。像这样;
现在解决方案:
第一的,您可以使用 rsync 和 ssh 将文件夹传输到服务器。这是最方便和最快捷的(因为包括压缩)。例如,从本地计算机的终端使用,
rsync -avz /path/to/local/50GBfolder -e ssh username@address:/home/user
下一个,使用 ssh 连接到服务器,然后从那里将文件夹复制到 owncloud 数据目录。(需要两个步骤,因为您需要 root 权限才能复制到用户拥有的 owncloud 数据目录www-data
。)
以这种方式复制文件;
sudo cp -r /home/user/50Gbfolder /path/to/data/$owncloud_username/files/
- 在数据目录中,每个 owncloud 用户都有一个文件夹
owncloud_username
,然后在该文件夹下有一个文件夹files
;因此在命令中提到了上面提到的。
最后,通过扫描来识别新文件,从而更新 owncloud 数据库。这可以通过预建命令完成。首先,将目录更改为您的 owncloud 安装目录。默认情况下,这是\var\www\owncloud
。因此,
cd \var\www\owncloud
如果你这样做,你将在此文件夹下ls
看到一个可执行文件。这是一个基于 php 的程序。occ
occ
要运行occ
重新扫描,
sudo -u www-data php occ files:scan $user_name
完全重新扫描可能需要一些时间。重新扫描后,您将在从浏览器登录时看到该文件夹。
解释:
rsync -avz /path/to/local/50GBfolder -e ssh username@address:/home/user
-a
包括递归、权限、链接、组等。查看手册页。-v
详细、-z
压缩和传输。
sudo cp -r /home/user/50Gbfolder /path/to/data/$owncloud_username/files/
-r
递归文件夹复制,所有子文件夹都被复制。
答案2
您的 scp 命令有两个问题:
您正在尝试上传目录,因此必须提供选项
-r
(递归复制)。环境变量被替换前命令的执行。因此,
$HOME
in[email protected]:$HOME/
扩展为本地(而非远程)计算机上主目录的路径。如果两台计算机上的主目录路径不同,则命令将无法按预期工作,很可能由于访问问题而失败。使用 时scp
,使用“.”引用远程计算机上的主目录(换句话说,scp
解释远程计算机上相对于主目录的路径)。
因此正确的命令是:
scp -r $HOME/5GBdata/ [email protected]:.
但是,请注意,此答案仅指出您在使用时的错误scp
。请参阅其他答案以获取有关如何实现最终目标的建议。