WSL上のUbuntuからWindows側のファイルにアクセスする方法

はじめに_

以下の手順でWindowsにWSLを使ってUbuntuをインストールしているとする。

UbuntuからのWindows上のファイルへのアクセス方法_

UbuntuからはアクセスできるWindowsのドライブ(CドライブとかDドライブとか)は以下のコマンドで確認できる。私の環境ではC、E、Fドライブが存在するので以下のように表示される。

% df -h
df -h
Filesystem      Size  Used Avail Use% Mounted on
none            7.8G  4.0K  7.8G   1% /mnt/wsl
none            953G  284G  669G  30% /usr/lib/wsl/drivers
none            7.8G     0  7.8G   0% /usr/lib/wsl/lib
/dev/sdc       1007G  7.5G  949G   1% /
none            7.8G  136K  7.8G   1% /mnt/wslg
rootfs          7.8G  1.9M  7.8G   1% /init
none            7.8G  896K  7.8G   1% /run
none            7.8G     0  7.8G   0% /run/lock
none            7.8G     0  7.8G   0% /run/shm
none            7.8G     0  7.8G   0% /run/user
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
none            7.8G   76K  7.8G   1% /mnt/wslg/versions.txt
none            7.8G   76K  7.8G   1% /mnt/wslg/doc
drvfs           953G  284G  669G  30% /mnt/c  (注:Cドライブ)
drvfs           2.8T  1.6T  1.2T  58% /mnt/e  (注:Eドライブ)
drvfs           2.0T  1.9T  195G  91% /mnt/f  (注:Fドライブ)
snapfuse        128K  128K     0 100% /snap/bare/5
snapfuse         74M   74M     0 100% /snap/core22/864
snapfuse         92M   92M     0 100% /snap/gtk-common-themes/1535
snapfuse         74M   74M     0 100% /snap/core22/817
snapfuse         41M   41M     0 100% /snap/snapd/19993
snapfuse         41M   41M     0 100% /snap/snapd/20092
snapfuse        131M  131M     0 100% /snap/ubuntu-desktop-installer/1245
snapfuse        132M  132M     0 100% /snap/ubuntu-desktop-installer/1272

Ubuntuからみると「/mnt/c」というディレクトリがWindows上のCドライブである。

WindowsのCドライブに移動してみる。

% cd /mnt/c
% ls

cd, ls, mv, cpなどを使ってディレクトリの移動(フォルダの移動)などを行うことができる。Linuxコマンドについて詳しくは以下のページを参照のこと。

課題1のSQLite3データベースファイルのアクセスについて_

LETUSよりreport1.dbと 01_create_table.sql をダウンロードし、以下の手順でUbuntuのディレクトリにコピーする。

  • WindowsのCドライブ上に「TUS_IP1」というフォルダを作成する。フォルダ名は半角文字にすること(右下のIMEのアイコンが「A」になっている状態で入力する。「あ」になっていたら全角文字なので「半角/全角」キーを押し切り替えること)
  • Windows上で作成したTUS_IP1にダウンロードしたreport1.dbと 01_create_table.sql を移動させる。
  • Ubuntu上でアクセスできるか確認する。うまくいかない場合はWindows側で上述の手順ができているかを確認する。
    % ls -1 /mnt/c/TUS_IP1 (以下のように表示されたらOK)
    01_create_table.sql
    report1.db
    
  • 作業ディレクトリを作成する。
    % cd 
    % mkdir -p ~/Report1
    % cd ~/Report1
    % cp /mnt/c/TUS_IP1/* ./
    % ls -1 (以下のように表示されたらOK)
    01_create_table.sql
    report1.db
    
  • データベース操作に失敗したときのためにデータベースファイルのバックアップを取る
    % cp -p report1.db report1.db.org
    
  • データベースにアクセスしてみる。
    % sqlite3 report1.db 
    SQLite version 3.37.2 2022-01-06 13:25:41
    Enter ".help" for usage hints.
    sqlite> .schema
    CREATE TABLE students (
     s_id char(10),
     s_name char(60) NOT NULL,
     d_id  int NOT NULL,
     e_year int NOT NULL,
     status DEFAULT '在籍',
     PRIMARY KEY (s_id),
     FOREIGN KEY (d_id) REFERENCES departments(d_id),
     CHECK (e_year > 1881)
     );
    CREATE TABLE departments(
     d_id int,
     d_name char(30) NOT NULL,
     PRIMARY KEY (d_id)
     );
    CREATE TABLE teachers(
     t_id int,
     t_name char(60) NOT NULL,
     d_id  int NOT NULL,
     position char(30),
     parttime_flg boolean DEFAULT 'f',
     PRIMARY KEY (t_id),
     FOREIGN KEY (d_id) REFERENCES departments(d_id)
     );
    CREATE TABLE lectures(
     l_id int,
     l_name char(30) NOT NULL,
     period char(30) NOT NULL,
     l_year int NOT NULL,
     d_id  int NOT NULL,
     credit int NOT NULL,
     PRIMARY KEY (l_id),
     FOREIGN KEY (d_id) REFERENCES departments(d_id),
     CHECK (l_year >= 1881),
     CHECK (credit > 0)
     );
    CREATE TABLE assignments(
     t_id int,
     l_id int,
     PRIMARY KEY (t_id, l_id),
     FOREIGN KEY (t_id) REFERENCES teachers(t_id),
     FOREIGN KEY (l_id) REFERENCES lectures(l_id)
     );
    CREATE TABLE registrations(
     s_id char(10),
     l_id int,
     gp int,
     PRIMARY KEY (s_id, l_id),
     FOREIGN KEY (s_id) REFERENCES students(s_id),
     FOREIGN KEY (l_id) REFERENCES lectures(l_id),
     CHECK(gp >= 0 and gp <= 5)
     );
    sqlite>
    

Wordファイルの名前を変更する_

例年、ダウンロードしたレポート用のWordファイルをそのまま提出する学生がいるので、そのようなトラブル防止用にダウンロードしたファイルの名前を変更する。

  • ダウンロードしたファイル名:20231109_HW1.docx
  • 変更するファイル名:20231109_HW1-【学籍番号】.docx (学籍番号は半角英数字で記載すること)

Ubuntu上で提出用Zipファイルを作成する_

前提条件

  • 解答が書き込まれているWordファイルがWindowsのCドライブ上に「TUS_IP1」というフォルダに20231109_HW1-9999999.docxという名前で保存されているとする。
  • 上で示したように作業ディレクトリを作成し、report1.db上で課題の内容を実行しているとする。
  1. 20231109_HW1-9999999.docxを作業ディレクトリにコピーする。
    % cd ~/Report1
    % cp /mnt/c/TUS_IP1/20231109_HW1-9999999.docx ./
    % ls -1
    01_create_table.sql  
    20231109_HW1-9999999.docx    (注:ファイル名が表示されていたらコピー成功)
    report1.db
    report1.db.org
    
  2. zipコマンドがあるか確認し、なければインストールする。
    % which zip
    /usr/bin/zip    (注:このようにインストール先が表示していればOK)
    
    (注:インストール先が表示されていない場合は以下のコマンドでインストール)
    % sudo apt install zip  
    
  3. zipファイルを作成する
    % zip Report1.zip 20231109_HW1-9999999.docx report1.db
      adding: 20231109_HW1-9999999.docx (deflated 14%)
      adding: report1.db (deflated 98%)
    
    % ls -1
    01_create_table.sql
    20231109_HW1-9999999.docx
    Report1.zip      (注:このファイルが作成されていることを確認する)
    report1.db
    report1.db.org
    
    % unzip -l Report1.zip  (注:ZIPファイルの中身を確認する。lengthは人によって違うのでこの例のとおりでなくてもよい)
    Archive:  Report1.zip
      Length      Date    Time    Name
    ---------  ---------- -----   ----
        21854  2020-11-05 14:21   20231109_HW1-9999999.docx
        53248  2020-11-05 14:00   report1.db
    ---------                     -------
        75102                     2 files
    
  4. WindowsのCドライブ「TUS_IP1」フォルダにZIPファイルをコピーする
    % cp Report1.zip /mnt/c/TUS_IP1/
    

注意:提出前にZipファイルの中身を確認すること。一番簡単な確認方法はWindows側でZipファイルを解凍してみればよい。

戻る_