次のコマンドを使用して、特定の(truecrypt-)ファイルをSDカード(およびクラウドを介して共有されるフォルダ)にバックアップするように設計されたbashスクリプトを作成しました。同期注文する。
問題は通常、SDカードがまだマウントされておらず、同期にならないことです。そこで、カードをマウントし、ファイルを同期し、再度マウント解除するスクリプトを作成しました。スクリプト:
#!/bin/bash
sudo mkdir /media/user_name/SDcard
sudo mount -t vfat LABEL="SDcard" /media/user_name/SDcard
rsync -avI /home/user_name/Dokumente/file_to_sync /media/user_name/SDcard
rsync -avI /home/user_name/Dokumente/file_to_sync /home/user_name/cloudbox
sudo umount /media/user_name/SDcard
sudo rmdir /media/user_name/SDcard
Cloudboxとの同期はうまく機能しますが、SDカードとの同期はうまく機能しません。また削除そして目次どちらのコマンドも実行されません。その結果、次にスクリプトを使用するときにディレクトリがすでに存在するため、エラーが発生します。
端末ですべてのコマンドを手動で継続的に実行する場合同期コマンド(一緒にSudo)をSDカードに追加すると、次のエラーメッセージが表示されます。
user_name@host ~ $ sudo rsync -av ~/Dokumente/file_to_sync /media/user_name/SDcard/file_to_sync
sending incremental file list
file_to_sync
rsync: chown "/media/user_name/SDcard/.file_to_sync.tK2RnM" failed: Operation not permitted (1)
sent 524,416,101 bytes received 127 bytes 61,696,026.82 bytes/sec
total size is 524,288,000 speedup is 1.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]
奇妙なことは、使用する代わりにデスクトップアイコンをダブルクリックしてSDカードをマウントするとsudoマウント...、問題なくファイルを同期できます。
私のスクリプトに問題がありますか?私はいくつかの修正を試しましたが、そのうち何も機能しませんでした。
ダブルクリックインストールとターミナルインストールはなぜ異なるのですか?端末で「ダブルクリックコマンド」を「再現」する方法
私は長い間それを働かせようとしてきました、フォーラムやチュートリアルなどは私を助けることができませんでした。だから誰もが提供できる小さな助けに感謝します。
ありがとう
私のシステム:Linux Mint 17(もともとCinnamonですがXFCEに変更されました)、CORE i7vProを搭載したLenovo T440p、250GB SSD、12GB RAM(そして私が出会った最悪のタッチパッド)
ベストアンサー1
だから権限の問題です。一般ユーザーは、ルートとしてマウントされたFATファイルシステムにアクセスできません。
FATには所有権情報がないため、すべてのファイルはFATをインストールしたユーザーが所有していると見なされます。 [1]このエラーメッセージは、所有権情報の保存オプションを使用して所有ファイルをFATファイルシステムにコピーしようとしたchown
ために発生します。-a
ただし、そこではユーザーがファイルを所有できるようにすることはできず、ルートが所有する必要があります。
あなたはできますrsync
また、sudoで実行--no-owner
(編集:対応するオプションも追加する必要があります)または-ouid=$USER
インストールコマンドに追加する必要があります。
または、udiskデーモンを使用して、グラフィカルデスクトップインターフェイスが実行するアクションをインストールまたはudisksctl
インストールできます。udisks
[2]
編集:udisks
少し違うように見えるのを忘れましたmount
。申し訳ありません。 LABEL =を使用しているので、明らかにudisksctl mount -b /dev/...
構文をサポートしていません。代わりに、udevで作成されたシンボリックリンク(ショートカットなどのファイル)を使用できます。 udisksctl mount -b /dev/disk/by-label/SDcard
。
USBスティックは独自にマウントポイントを選択します。パスはファイルシステム識別子(タグなど)を使用するため、その識別子が一意である限り、パスは一貫しています...理想的ではないかもしれません。
udisks
.GNOMEディスクのグラフィカルインタフェースを使用すると、これを行うことができると思います/etc/fstab
(ディスクを選択してパーティションを選択し、下のギアをクリックしてインストールオプションを編集します)。mount
なしで「前」コマンドを使用するには、インストールsudo
オプションのリストに「user」または「users」を追加することもできます(これらのオプションの違いなどを確認してman mount
確認してください)。man fstab
[1]デフォルトのLinuxファイルシステム(ext4など)はFATとは異なります。ファイルシステムは各ファイルを所有するユーザーIDを追跡するので、誰がFSをマウントしたかは問題ではありません。 Windows NTFSもユーザーIDをサポートしていますが、Linuxにインストールするときにどのように機能するのか尋ねないでください。
[2] ここにはいくつかの追加のポリシー制限があります。デフォルトでは、SSHを使用してこのシステムにリモートでログインするときにudiskを使用することはできません。