This project represents our work for the Operational Systems II course, part of the Computer Science program at the Federal University of Rio Grande do Sul.
Envia o arquivo filename.ext para o servidor, colocando-o no “sync_dir” do servidor e propagando-o para todos os dispositivos daquele usuário. e.g. upload /home/user/MyFolder/filename.ext
download
Faz uma cópia não sincronizada do arquivo filename.ext do servidor para o diretório local (de onde o servidor foi chamado). e.g. download mySpreadsheet.xlsx
delete
Exclui o arquivo de “sync_dir”.
list_server
Lista os arquivos salvos no servidor associados ao usuário.
list_client
Lista os arquivos salvos no diretório “sync_dir”
get_sync_dir
Cria o diretório “sync_dir” e inicia as atividades de sincronização
exit
Fecha a sessão com o servidor.l
Em relação aos comandos list_server e list_client, é importante que esteja disponível a
visualização de, pelo menos, os MAC times: modification time (mtime), access time (atime) e
change or creation time (ctime) – plataformas Unix e Windows os interpretam diferentemente –
dos arquivos exibidos no terminal.
O comando get_sync_dir deve ser executado automaticamente logo após o estabelecimento de
uma sessão entre cliente e servidor. Quando o comando get_sync_dir for executado, o servidor
verificará se o diretório “syncdir” existe no dispositivo do cliente, e criá-lo se
necessário. Toda vez que alguma mudança ocorrer dentro desse diretório, por exemplo, um
arquivo for alterado, renomeado ou deletado, essa mudança deverá ser espelhada no servidor e
em todos os dispositivos daquele cliente.
Ao utilizar o comando upload, o usuário deve ser capaz de carregar no servidor um arquivo não
sincronizado que esteja em qualquer diretório no dispositivo local. O servidor, ao processar o
comando de upload, deve então propagar o arquivo a todos os dispositivos do cliente (seria
equivalente à utilizar a interface web do Dropbox para carregar um arquivo no servidor, que será
propagado a todos os dispositivos daquele cliente).
Ao utilizar o comando de download, uma cópia do arquivo existente no servidor deve ser baixada
para um diretório local não sincronizado do dispositivo do cliente. Essa cópia local, fora do diretório
‘sync_dir’, não deverá sofrer sincronizações posteriores (seria equivalente à utilizar a
interface web do Dropbox para baixar um arquivo do servidor para um diretório local na máquina
do usuário).
Em relação aos comandos list_server e list_client, é importante que esteja disponível a visualização de, pelo menos, os MAC times: modification time (mtime), access time (atime) e change or creation time (ctime) – plataformas Unix e Windows os interpretam diferentemente – dos arquivos exibidos no terminal.
O comando get_sync_dir deve ser executado automaticamente logo após o estabelecimento de uma sessão entre cliente e servidor. Quando o comando get_sync_dir for executado, o servidor verificará se o diretório “syncdir” existe no dispositivo do cliente, e criá-lo se
necessário. Toda vez que alguma mudança ocorrer dentro desse diretório, por exemplo, um
arquivo for alterado, renomeado ou deletado, essa mudança deverá ser espelhada no servidor e
em todos os dispositivos daquele cliente.
Ao utilizar o comando upload, o usuário deve ser capaz de carregar no servidor um arquivo não sincronizado que esteja em qualquer diretório no dispositivo local. O servidor, ao processar o comando de upload, deve então propagar o arquivo a todos os dispositivos do cliente (seria equivalente à utilizar a interface web do Dropbox para carregar um arquivo no servidor, que será propagado a todos os dispositivos daquele cliente).
Ao utilizar o comando de download, uma cópia do arquivo existente no servidor deve ser baixada para um diretório local não sincronizado do dispositivo do cliente. Essa cópia local, fora do diretório ‘sync_dir’, não deverá sofrer sincronizações posteriores (seria equivalente à utilizar a interface web do Dropbox para baixar um arquivo do servidor para um diretório local na máquina do usuário).