web-dev-qa-db-ja.com

データをownCloudにSCPする方法は?

動機:owncloud-clientはさまざまな理由で定期的に失敗します。それらのイベント中にscpが必要です。サーバーでは、ls -la at $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する場所は?

サーバー: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)にインストールした場合は、次に進みます。 configファイルに移動して、データディレクトリの場所を見つけます。

nano /var/www/owncloud/config/config.php

このファイルは、データディレクトリの場所(すべてのファイルが保存されている場所)を示します。このような; Config.php file of owncloud

今、Solution

最初に、rsyncとsshを使用してフォルダをサーバーに転送できます。最も便利で高速です(圧縮が含まれているため)。たとえば、端末のローカルコンピューターから使用する場合、

rsync -avz /path/to/local/50GBfolder -e ssh username@address:/home/user

次に、sshを使用してサーバーに接続し、そこからowncloudデータディレクトリにフォルダーをコピーします。 (www-dataユーザーが所有するowncloudデータディレクトリにコピーするにはroot権限が必要なので、2つのステップが必要です。)

この方法でファイルをコピー;

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を実行すると、このフォルダーの下にoccとして実行可能ファイルが表示されます。このoccはphpベースのプログラムです。

再スキャンのために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再帰的なフォルダーのコピー。すべてのサブフォルダーがコピーされます。

6
ankit7540

Scpコマンドには2つの問題があります。

  • ディレクトリをアップロードしようとしているため、-rオプションを指定する必要があります(再帰的にコピーします)。

  • 環境変数が置き換えられますbeforeコマンドの実行。したがって、$HOME[email protected]:$HOME/は、(リモートではなく)ローカルマシン上のホームディレクトリのパスに展開されます。 2台のマシンのホームディレクトリパスが異なる場合、コマンドは意図したとおりに動作せず、おそらくアクセスの問題のために失敗します。 scpを使用する場合は、リモートマシンのホームディレクトリを「。」で参照してください。 (つまり、scpは、ホームマシンに関連するリモートマシン上のパスを解釈します)。

したがって、正しいコマンドは次のようになります。

scp -r $HOME/5GBdata/ [email protected]:.

ただし、この回答は、scpを使用した際の間違いを示しているだけです。最終目標の達成方法に関する推奨事項については、他の回答を参照してください。

2
Leon